我是学习laravel的新手。目前我一直被困在Laravel政策中,请你帮忙指导我如何为我的项目添加政策?
我只想让管理员用户能够看到管理信息中心'使用Laravel策略规则但失败了。实际上每个注册用户都能看到该入口(就像下面显示的附图)。
用户名是uu@gmail.com,密码是uuuuuu。 请转到我的测试网站http://lookoko.com/并使用用户名和密码登录,您将在下拉列表中看到“管理仪表板”列表。
答案 0 :(得分:0)
要创建新的中间件,请使用make:middleware
Artisan命令:
php artisan make:middleware AdminMiddleware
此命令将在AdminMiddleware
目录中放置一个新的app/Http/Middleware
类。在此中间件中,如果登录用户是admin,我们将仅允许访问路由。否则,我们会将用户重定向回home
URI。
<?php
namespace App\Http\Middleware;
use Closure;
class AdminMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (! auth()->user()->is_admin) {
return redirect()->route('home');
}
return $next($request);
}
}
在这里,我假设您在用户表中有一个名为is_admin
的列
注册中间件
您应该为中间件分配app/Http/Kernel.php
文件中的密钥。默认情况下,此类的$routeMiddleware
属性包含Laravel附带的中间件的条目。要添加自己的,只需将其附加到此列表并为其指定一个您选择的键。例如:
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
...
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
在HTTP内核中定义了中间件后,您可以使用group
方法将中间件分配给路由组:
Route::group(['middleware' => ['admin']], function () {
// all your admin routes comes here
});