Laravel 5.2身份验证错误:直接通过URL访问登录页面

时间:2016-10-19 07:32:33

标签: laravel authentication

我使用的是Laravel 5.2,我在:

中有Authenticate.php文件
\vendor\laravel\framework\src\Illuminate\Auth\Middleware

我需要对用户进行身份验证,以便用户无法通过在URL中写入来访问登录页面。怎么做? 当我搜索时,解决方案是针对在Http内部的Middleware文件夹中的Authenticate文件,这有点不同。

This is my Authenticate.php and it's content

请告诉我怎么做。我试过了:

if(Auth::guard($guard) -> guest()){
if ($request -> ajax()){
return response['Unauthorized',401];
} else{
return redirect() -> guest('login'); 
}
}
return $next($request);
}
}

怎么做?请告诉我选项。邀请任何建议。 并且,提前谢谢你...... :)

2 个答案:

答案 0 :(得分:1)

您在搜索时找到的解决方案是正确的,如果您查看了文档here,则应该在app/Http/Middleware内编辑中间件,正确的方法是: 您必须更新具有此功能的中间件app/Http/Middleware/RedirectIfAuthenticated.php

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/admin');
    }

    return $next($request);
}

在你的情况下你可以做什么,你可以在你当前的句柄函数中使用相同的if子句,所以它看起来像这样:

if (Auth::guard($guard)->check()) {
    return redirect('/admin');
}
if (Auth::guard($guard)->guest()) {
    if ($request->ajax()) {
        return response['Unauthorized',401];
} else {
        return redirect()->guest('login');
    }
}
return $next($request);

答案 1 :(得分:0)

将只有登录用户可以访问的所有路由放入Auth中间件组:

Route::group(['middleware' => ['auth']], function () {
        // Routes here
});