讨论 技术讨论 api-token问题

api-token问题

WX_pX4 发表于    阅读:180    回复:9

问题描述:

用Apifox 测试api/login,api/logout. api/login 是得到`api-token`, 然后我用api/logout, 得到成功提示。然后我又调用api/login,发现对同样的username,password, 第二次返回的跟第一次返回的api-token是一样的。所以, 对于同一个用户api-token 永远是一样的吗?

在我自己新开发的模块中,我发现无论我是否携带‘api-token` header, 都可以得到数据。 我需要在controller中加入auth 或api-token检查吗?如果需要自己检查,可否有示例代码?


环境信息:

PHP8.1 ModStartCMS V8.0.0

评论

如果请求header 中携带了 api-token,则会优先使用携带的 api-token。所以第一个问题应该是你一直携带了相同的 token 在请求中导致的。

第二个问题,默认 Api 组中的所有请求都是经过了这个 ModStart\App\Api\Middleware\SessionMiddleware 。如果是用户(Member)验证,则需要再增加 \Module\Member\Middleware\ApiAuthMiddleware 验证。具体可参考这两个 Middleware 中的逻辑。

 

ok. thanks.

 

那请问api-token的有效时间可以控制吗? 我把api-token 保存在localstorage 后,短时间内可以用来调用需要member验证的api 接口,但过几个小时后,保存的api-token就失效了,接口返回要求登录(如下)。有什么配置可以设置'api-token'的有效时间吗?比如一个月?而且应为API也要通过ModStart\App\Api\Middleware\SessionMiddleware,apit-token失效是更session有关吗?

{code: 1001

data: null

msg: "请登录"

redirect: "https..."
}


 

如何控制 Cookie 信息

Laravel 的 Cookie 配置信息配置文件位于 config/session.php,具体可参考以下几个配置

  • lifetime:会话有效期,直接控制 Cookie 的有效期,单位分钟,默认为 120 表示 2 小时

  • expire_on_close:关闭浏览器是否立即过期

  • path:Cookie 的 Path

  • domain:Cookie 的 域名

 

谢谢。 我在config中还看到sanctum.php, 但是api-token是不是并没有用到sanctum.php?

 

谢谢。 我在config中还看到sanctum.php, 但是api-token是不是并没有用到sanctum.php?

 

在追加一个相关的问题, 我的前端是一个uni-app项目,所有的功能都是要调用不同的Api接口来完成的,计划要要打包H5,安卓端,服务器端的session设置会影响到api-token的时效,对安卓端跟H5的作用是一样的吗? 我有点迷糊,总觉得session只是对浏览器,比如对H5有效。



 

@WX_pX4: 一样的

 
1
我来评论
QQ
微信