路由不基于角色

Routing not based on roles

Laravel 5.5问题。

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

如何防止他们在特定页面上执行特定操作之前访问其他路由?

因为在地址栏中输入其他路由会绕过需要操作的页面。

例子 登录后你有3条路线 1./a1 2. /a2 3. /a3

如果用户没有在某些路线/账单上执行操作,他们不应该看到 1、2、3。但是我注意到如果用户已经知道 1-3 并且他们在地址栏中输入它会将他们带到那里.

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

中间件:

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');
});

基本上,如果玩家试图查看 /online 但他们的路径 == 0,它会将他们重定向回他们想要的页面 choose/update。