419对不起,您的会话已过期。请刷新,然后重试。自定义登录不起作用

时间:2018-10-18 16:40:49

标签: php laravel login

我已经创建了一个登录页面,但是我无法通过它,因为它说对不起,您的会话已过期。请刷新,然后重试。 这是我的控制器...

<?php

 namespace App\Http\Controllers;

 use Illuminate\Http\Request;
 use DB;
 use App\Http\Requests;
 use App\Http\Controllers\Controller;

 class loginController extends Controller
  {
    /**
    * Display a listing of the resource.
    *
    * @return \Illuminate\Http\Response
    */
    public function index()
     {
            $request = Request::all();

        $registers = registers::where('employeeID', $request['employeeID'])
        ->first();

        $validCredentials = Hash::check($request['password'], $request- 
        >get('password'));

        if ($validCredentials) {
            Session::flash('login','login Successful!');
            return view('dashboard');
        }
    }

这是我的路线...

Route::get('/', function () {
return view('register');
});


Route::resource('register', 'registerController');

Route::get('login',function(){

return view('login');
});

Route::resource('login', 'loginController');
Route::resource('login', 'loginController@index');

Route::get('dashboard',function(){

return view('dashboard');
});

我没有模型,因为我认为没有必要 虽然您的意见将受到我的laravel新手的高度赞赏

1 个答案:

答案 0 :(得分:0)

在laravel中尝试对用户进行身份验证时,请使用以下语法(您可以将其修改为要检查的字段)。该代码的作用是,它将检查您的数据库,然后尝试成功,然后创建用户会话。

if (Auth::attempt(['email' => $email, 'password' => $password])) {
     // redirect or do anything else
}

有关更多详细信息,您可以在这里查看:https://laravel.com/docs/5.7/authentication#authenticating-users

================================

我将尝试举例说明您当前的语法(部分语法)

$validCredentials = Hash::check($request['password'], $request->get('password'));

if ($validCredentials) {
   Session::flash('login','login Successful!');
}

这是我对您的代码的简短说明:

$validCredentials.............

仅检查密码是否正确且带有哈希,不进行任何会话或cookie。并不能真正验证用户身份。它只会检查密码是否正确

if ($validCredentials) {
   Session::flash('login','login Successful!');
}

仅Flash会话。您必须了解的是Flash会话只是短期的(仅在下一页可用,如果用户更改页面/刷新页面,该会话将消失)。

仅当您使用上述代码创建长期会话(用户确实登录)时,Flash会话才有效