在Laravel 5.5中成功进行身份验证后获取CSRF令牌

问题描述 投票:0回答:2

我正在使用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发送到主页

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

php laravel authentication token csrf
2个回答
0
投票

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


0
投票

您可以从$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);
© www.soinside.com 2019 - 2024. All rights reserved.