寻找一些帮助我的laravel项目添加政策

时间:2016-12-27 11:13:54

标签: laravel

我是学习laravel的新手。目前我一直被困在Laravel政策中,请你帮忙指导我如何为我的项目添加政策?

我只想让管理员用户能够看到管理信息中心'使用Laravel策略规则但失败了。实际上每个注册用户都能看到该入口(就像下面显示的附图)。

用户名是uu@gmail.com,密码是uuuuuu。 请转到我的测试网站http://lookoko.com/并使用用户名和密码登录,您将在下拉列表中看到“管理仪表板”列表。

enter image description here

1 个答案:

答案 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
});

Docs