上一篇
canManageBinshopsBlogPosts()
方法实现细粒度权限控制 # 1. 安装Laravel 12(需PHP 8.4+) composer global require laravel/installer laravel new blog_project --teams # 2. 前端资源构建(Node.js 20.x) npm install && npm run dev # 3. 数据库配置(MySQL 8.0 + Redis 7.2) php artisan migrate:fresh --seed
routes/web.php
)// 基础路由 Route::get('/posts', [PostController::class, 'index'])->name('posts.index'); // 参数路由 + 验证 Route::get('post/{id}', [PostController::class, 'show']) ->where('id', '[0-9]+') ->middleware('auth'); // 路由群组(后台前缀) Route::prefix('admin')->group(function () { Route::resource('users', AdminUserController::class); });
app/Http/Middleware
)// 自定义令牌验证中间件 class EnsureTokenIsValid { public function handle($request, Closure $next) { if ($request->header('X-API-Token') !== 'secret-123') { abort(403, 'Invalid token!'); } return $next($request); } }
// 模型定义(app/Models/Post.php) class Post extends Model { protected $fillable = ['title', 'content']; // 关联用户 public function author() { return $this->belongsTo(User::class, 'user_id'); } } // 查询操作 $posts = Post::with('author') ->where('views', '>', 100) ->latest() ->paginate(10);
composer require binshops/laravel-blog php artisan vendor:publish --provider="BinshopsBlog\BinshopsBlogServiceProvider" php artisan migrate
// app/Models/User.php public function canManageBinshopsBlogPosts() { return $this->hasRole('editor'); // 集成Spatie权限包 }
<!-- resources/views/blog/index.blade.php --> @foreach($posts as $post) <article> <h2>{{ $post->title }}</h2> <p>{{ $post->excerpt }}</p> <a href="{{ route('blog.show', $post->slug) }}">阅读全文 →</a> </article> @endforeach {{ $posts->links('pagination::bootstrap-5') }}
// 配置OAuth2服务 php artisan passport:install // 资源路由 Route::apiResource('posts', PostController::class)->middleware('auth:api');
// 发送邮件队列 dispatch(new SendEmailJob($user))->onQueue('emails'); // 监控仪表盘 php artisan horizon
// 单元测试示例 test('user can view post', function () { $user = User::factory()->create(); $post = Post::factory()->create(['user_id' => $user->id]); $response = $this->actingAs($user)->get(route('posts.show', $post)); $response->assertStatus(200); });
💡 提示:2025年Laravel生态持续进化,建议每月运行composer update
保持依赖更新,并使用php artisan test
确保代码稳定性!
本文由 业务大全 于2025-08-25发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://xdh.7tqx.com/wenda/731639.html
发表评论