当我尝试登录时,我遇到登录问题,说由于不活动而导致页面已过期。我正在使用中间件根据用户登录检查角色,而且似乎无法正常工作。当尝试登录页面时,弹出消息已过期。
路线:
Route::get('/', function () {
return view('login');
});
Route::get('/dashboard/{user_id}', ['as' => 'dashboard', function ($user_id) {
return view('theme.index')->with(['id'=>$user_id]);
}]);
Route::post('login', 'AuthController@postSignIn')->name('login');
AuthController:
public function postSignIn(Request $request)
{
if (Auth::attempt(['username' => $request['username'], 'password' => $request['password']])) {
$user=DB::table('users')->where([['username', '=', $request['username']],['status','=','0']])->first();
$user_id=$user->user_id;
return redirect()->route('dashboard',$user_id)->with('message', 'State saved correctly!!!');
} else {
return redirect()->back();
}
}
中间件:
public function handle($request, Closure $next)
{
if ($request->user() === null) {
// return response("Insufficient permissions", 401);
return response(view('error'),401);
}
$actions = $request->route()->getAction();
$roles = isset($actions['roles']) ? $actions['roles'] : null;
if ($request->user()->hasAnyRole($roles) || !$roles) {
return $next($request);
}
// return response("Insufficient permissions", 401);
return response(view('error'),401);
}
}
索引:
<form class="form-horizontal" action="{{ route('login') }}" method="post">
{{ csrf_token() }}
<div class="form-group m-b-20 row">
<div class="col-12">
<label for="emailaddress">Username</label>
<input class="form-control" type="text" id="username" required="" placeholder="Enter Username">
</div>
</div>
<div class="form-group row m-b-20">
<div class="col-12">
<label for="password">Password</label>
<input class="form-control" type="password" required="" id="password" placeholder="Enter your password">
</div>
</div>
<div class="form-group row text-center m-t-10">
<div class="col-12">
<button class="btn btn-md btn-block btn-primary waves-effect waves-light" type="submit">Login</button>
</div>
</div>
</form>
答案 0 :(得分:2)
您可以通过修改以下值
来更改config / session.php中Laravel config中的会话生存期寿命
你也需要运行
php artisan config:cache
让Laravel选择新的配置。
答案 1 :(得分:0)
在$除了VerifyCsrfToken.php中间件的数组之外添加您的路由,例如这个$ except = [&#34; / login&#34; ]。
答案 2 :(得分:0)
我已经弄明白我是从头开始做的,这是Auth功能的问题 导入Auth之前,我确实运行了两个命令来清除我的缓存
php artisan cache:clear
php artisan config:cache
and import Auth
感谢您帮助人们欣赏它
答案 3 :(得分:0)
打开VerifyCsrfToken.php中间件,并放入您的URL除外,如:
protected $except = [
'http://localhost:8000/login'
];
并可以查看laravel文档以获取有关CSRF的更多信息 https://laravel.com/docs/5.6/csrf#csrf-excluding-uris
答案 4 :(得分:-1)
我在Laravel 5.6上遇到了同样的问题。解决方案只是添加{{csrf_field()}}