【问题标题】:Laravel 5.4 TokenMismatchException in VerifyCsrfToken.php line 68Laravel 5.4 TokenMismatchException 在 VerifyCsrfToken.php 第 68 行
【发布时间】:2017-07-29 23:20:59
【问题描述】:

当我第一次登录时,它运行良好,但是当我从我的应用程序中注销并尝试重新登录时,我收到了这个错误。

我尝试了几乎所有可用的解决方案,但无法解决问题。有什么办法可以解决这个错误吗?

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

【问题讨论】:

  • 你如何注销和登录?
  • 列出您尝试过的解决方案和结果,将有助于任何回答不建议相同操作的人。
  • 尝试 (你的项目基本路径)/public/logout 然后 (基本路径)/public 。它应该工作
  • 检查我的答案。

标签: laravel csrf laravel-5.4


【解决方案1】:

您的错误可能来自您的会话操作。当你这样做

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. 

【讨论】:

    【解决方案2】:

    可能表单没有声明token的输入标签:

    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    

    【讨论】:

      【解决方案3】:

      您的按钮是否在表单中断开连接?如果是这样,你需要把这个: {{ csrf_field }} 放在你的 POST 类型中。

      【讨论】:

        【解决方案4】:

        转到配置/会话文件并检查下面是否有此行:

        'domain' => env('SESSION_DOMAIN', null)
        

        如果是,则访问您的.env 文件并设置如下:

        SESSION_DOMAIN=null
        

        然后刷新,应该没问题。

        【讨论】:

          猜你喜欢
          • 2017-02-21
          • 2017-02-23
          • 2017-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-20
          相关资源
          最近更新 更多