在VerifyCsrfToken.php第68行中的Laravel 5.4 TokenMismatchException

时间:2017-03-09 05:28:57

标签: laravel csrf laravel-5.4

当我第一次登录时,它运行正常,但当我从我的应用程序注销并尝试重新登录时,我收到此错误。

我已经尝试了几乎所有可用的解决方案,但无法解决问题。解决此错误的任何解决方案?

这是我执行登录和注销的方式(如果代码错误,请纠正我,因为我是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');
}

4 个答案:

答案 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

然后刷新,就可以了。