当我第一次登录时,它运行正常,但当我从我的应用程序注销并尝试重新登录时,我收到此错误。
我已经尝试了几乎所有可用的解决方案,但无法解决问题。解决此错误的任何解决方案?
这是我执行登录和注销的方式(如果代码错误,请纠正我,因为我是laravel的新手。)
我尝试了laravel-caffeine和{{csrf_token()}}。
我认为这是与会话相关的问题。
public function auth(Request $request)
{
$this->validate($request, [
'email' => 'required|email|max:255',
'password' => 'required|min:6',
]);
$data = $request->only('email', 'password');
if (\Auth::attempt($data)) {
$email = $request->email;
$users = DB::table('users')
->where('email', $email)
->select('users.*', 'user_name')
->get();
Session::put('set', $users);
if ($users[0]->is_admin == '1') {
return redirect()->intended('adminDashboard');
}else{
return redirect()->intended('dashboard');
}
}else{
return back()->withInput()->witherrors(['Email or password did not match!']);
}
}
public function logout(){
Session::flush();
return view('login/login');
}
答案 0 :(得分:3)
您的错误可能来自您的会话操作。当你这样做
Auth::attempt($data)
用户已在会话中设置。你不需要做Session::put()
件事。要获得用户,请执行
$user = Auth::user();
要注销,请执行
Auth::logout(); //will clear the user from the session automatically
总而言之,删除代码中的所有会话操作。只能玩Auth;
Session::flush(); //DELETE THIS LINE
使用
将Auth添加到控制器的顶部use Auth; //easier to work like that.
答案 1 :(得分:1)
表格可能没有声明令牌的输入标签:
UITextView
答案 2 :(得分:0)
您的按钮是否在表单中断开连接?如果是这样,您需要以POST类型的形式输入:{{csrf_field}}。
答案 3 :(得分:0)
转到config / session文件并检查下面是否有此行:
'domain' => env('SESSION_DOMAIN', null)
如果是,则访问您的.env
文件并进行如下设置:
SESSION_DOMAIN=null
然后刷新,就可以了。