路由不基于角色

时间:2018-02-19 15:11:14

标签: laravel closures middleware

Laravel 5.5问题。

假设用户已经过身份验证并具有正确的访问角色,但您希望他们在访问任何其他路由之前对特定页面执行操作。

在特定页面上执行特定操作之前,您如何阻止他们访问其他路线?

因为放入地址栏中的其他路线会绕过所需的操作页面。

实施例 登录后您有3条路线 1. / a1 2. / a2 3. / a3

如果用户没有对某些路线/计费执行操作,则他们不应该看到1,2,3。但是我注意到,如果用户已经知道1-3并且他们进入地址栏就会将他们带到那里。< / p>

1 个答案:

答案 0 :(得分:0)

以上是我上述评论的基本示例。因为我的游戏项目与游戏项目相关,所以需要相应调整以满足您的需求:

中间件:

public function handle($request, Closure $next)
    {
        $user = Auth::user();

        if ($user->game_path == 0)
        {
            Session::flash('error', 'Your player path must be selected before continuing.');

            return redirect('/');
        }

        return $next($request);
    }

内核:

'path' => \App\Http\Middleware\CheckPath::class,

路线:

Route::group(['middleware' => ['path']], function () {

   Route::get('/online', 'VariousController@online')->name('online');
});

基本上,如果玩家试图查看/在线,但他们的路径== 0,它会将它们重定向回所需的页面,供他们选择/更新。