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

如何模拟登录Snipe-IT并自动创建个人API令牌?

解决Snipe-IT模拟登录中_token字段的获取问题

核心结论

_token就是CSRF令牌,和后续创建API令牌需要的XSRF-TOKEN同源,都来自登录页面的HTML内容里。

具体步骤(curl测试版)

  1. 请求登录页面获取CSRF令牌与初始Cookie
    发送GET请求到登录页面,从返回的HTML中提取_token,同时保存返回的Cookie(包含XSRF-TOKEN和snipeit_session初始值):

    # 保存登录页面到临时文件,同时记录Cookie到cookie.txt
    curl -c cookie.txt http://my-snipit-instance/login > login_page.html
    # 从页面meta标签提取CSRF令牌(Laravel框架标准写法)
    CSRF_TOKEN=$(grep -o '<meta name="csrf-token" content="[^"]*"' login_page.html | awk -F '"' '{print $4}')
    

    如果页面中_token是直接放在表单的隐藏字段里,也可以用这个命令提取:

    CSRF_TOKEN=$(grep -o 'name="_token" value="[^"]*"' login_page.html | awk -F '"' '{print $4}')
    
  2. 使用_token执行登录请求
    带上之前保存的Cookie,将_token、用户名密码等参数POST到登录接口,同时更新Cookie会话状态:

    curl -b cookie.txt -c cookie.txt -X POST http://my-snipit-instance/login \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -d "_token=$CSRF_TOKEN" \
      -d "prevent_autofill=" \
      -d "password_fake=" \
      -d "username=webuser" \
      -d "password=1234567890"
    

    参数说明:-b加载已有Cookie,-c保存登录后更新的会话Cookie。

  3. 登录成功后创建API令牌
    用更新后的Cookie发送POST请求到令牌创建接口,注意要带上解码后的XSRF-TOKEN请求头:

    # 从Cookie文件中提取并解码XSRF-TOKEN
    XSRF_TOKEN=$(grep -o 'XSRF-TOKEN\s*=\s*[^;]*' cookie.txt | awk -F '=' '{print $2}' | sed 's/%3D/=/g')
    # 发送创建令牌请求
    curl -b cookie.txt -X POST http://my-snipit-instance/oauth/personal-access-tokens \
      -H "Content-Type: application/json" \
      -H "X-XSRF-TOKEN: $XSRF_TOKEN" \
      -d '{"name":"AutoCreatedToken","scopes":[],"errors":[]}'
    

原理说明

Snipe-IT基于Laravel框架,遵循其CSRF防护逻辑:

  • 访问登录页面时,后端生成CSRF令牌,一方面通过<meta>标签或表单隐藏字段嵌入HTML(即登录请求需要的_token),另一方面通过XSRF-TOKEN Cookie返回。
  • 登录请求必须携带_token验证合法性,成功后snipeit_session会更新为有效会话标识。
  • 后续创建API令牌的POST请求,需同时携带有效的snipeit_session Cookie和XSRF-TOKEN(可通过Cookie或X-XSRF-TOKEN请求头传递)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:05:56