【问题标题】:Get CSRF token on successful authentication in Laravel 5.5在 Laravel 5.5 中成功认证时获取 CSRF 令牌
【发布时间】:2018-05-30 08:00:12
【问题描述】:

我正在使用 Laravel 自己的 CSRF 令牌身份验证...

在我的控制器中

public function __construct()
{
    $this->middleware('auth')->except('login');
}

public function authenticate(Request $request)
{
    $credentials = $request->only('email', 'password');
    if ($token = Auth::attempt($credentials))
    {
        // $request->session()->regenerate();
        // return response()->json(compact('token'));

        return redirect()->intended('/home');
    }

和路线
Route::post('/authenticate', 'AuthController@authenticate');

它正在成功记录我并发送到主页 csrf token

但我无法在 authenticate 方法中获取令牌。我想用它来验证 REST API...我不想使用 JWT 或其他 Auth 方法,因为我想在同一个项目中使用 REST API 和其他 UI 页面(刀片)...

【问题讨论】:

    标签: php laravel authentication token csrf


    【解决方案1】:

    您可以在 laravel 中使用 Passport 来处理 Rest API 的身份验证。

    【讨论】:

      【解决方案2】:

      您可以从$request 对象中获取传递的令牌。

      $passedToken = $request->input('_token');
      

      但不能保证这个令牌是真实的。您必须通过将其与当前会话的令牌进行比较来确认它的真实性。

      $sessionToken = $request->session()->token();
      
      if (! is_string($sessionToken) || ! is_string($passedToken) || !hash_equals($sessionToken, $passedToken) ) {
          throw new \Exception('CSRF token mismatch exception');
      }
      
      return $next($request);
      

      【讨论】:

        猜你喜欢
        • 2018-07-13
        • 2016-07-30
        • 2016-02-04
        • 2018-02-20
        • 2020-06-28
        • 2014-08-20
        • 2014-10-21
        • 2018-02-01
        • 2017-04-20
        相关资源
        最近更新 更多