由于不活动,页面已过期。请刷新并在登录中重试

时间:2018-05-02 06:24:39

标签: php laravel laravel-5.5 laravel-5.6

当我尝试登录时,我遇到登录问题,说由于不活动而导致页面已过期。我正在使用中间件根据用户登录检查角色,而且似乎无法正常工作。当尝试登录页面时,弹出消息已过期。

路线:

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>

5 个答案:

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