You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Laravel Sanctum时如何获取XSRF-TOKEN值?

Laravel Sanctum下获取XSRF-TOKEN的正确方式

方案一:不依赖全局变量获取匹配的XSRF-TOKEN

Laravel Sanctum中,csrf_token()返回的是会话原始CSRF令牌,而前端拿到的XSRF-TOKEN cookie是经过加密后的令牌,这是两者值不同的核心原因。要获取和前端一致的令牌值,可以通过以下两种方式:

  • 解密请求中的XSRF-TOKEN cookie:
    Laravel会自动加密XSRF-TOKEN存储,使用Crypt门面解密即可得到匹配的值:

    use Illuminate\Support\Facades\Crypt;
    
    $validXsrfToken = Crypt::decryptString($request->cookie('XSRF-TOKEN'));
    

    解密后的值与前端Cookies.get('XSRF-TOKEN')完全一致,可直接用于Slack OAuth的state校验。

  • 从会话获取原始令牌再加密:
    先拿到会话中的原始CSRF令牌,再用Crypt加密得到和cookie一致的字符串:

    use Illuminate\Support\Facades\Crypt;
    use Illuminate\Support\Facades\Session;
    
    $sessionToken = Session::token();
    $validXsrfToken = Crypt::encryptString($sessionToken);
    

方案二:使用独立的唯一字符串(备选)

如果不想和CSRF机制耦合,也可以生成独立的随机字符串作为state:

  • 生成随机字符串并存入会话:
    use Illuminate\Support\Str;
    
    $state = Str::random(40);
    session(['slack_oauth_state' => $state]);
    
  • 回调时校验:
    if ($request->input('state') !== session('slack_oauth_state')) {
        abort(403, '非法的state参数');
    }
    

内容的提问来源于stack exchange,提问作者wonder95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:52:26