strapi`在调用`api/auth/local`登录接口时,一直报`403 forbidden` 或 `401 (Unauthorized) error`问题该如何解决
问题描述
strapi
在调用api/auth/local
登录接口时,一直报403 forbidden
或 401 (Unauthorized) error
问题。
这个接口的作用其实就是使用用户名、密码登录,来获得token,以便获取需要Authenticated
的接口数据。
这个问题来得很突然,是我在升级了strapi
版本后产生的,我一度以为是框架升级过程中变更了什么配置导致。
而且不管我是用user下的普通用户
登录还是管理员用户
登录都是这个问题。
解决403 forbidden问题
这个问题的本质原因是,调用api/auth/local
登录接口,因为它是登录接口,是要用来获取token
的,所以本身不需要token
,即不需要Authenticated
里的权限,那就是需要public
权限了。让它开放给所有用户使用。所以,确保,你在设置-用户及角色权限-public-Users-permissions
下的callback
权限已经勾选。
它对应的接口即为:
解决401 (Unauthorized) error问题
如果是其他需要认证的接口报这个问题,那么肯定是你的token已经过期,这时重新调用api/auth/local
登录接口获取新的token
即可。
如果是在调用api/auth/local
登录接口,也报这个错,那么很有可能你在该接口上使用了token
,请注意,它是不需要token
的。
如果你是在postman
调试遇到了这个问题,那么很有可能是你勾选了这个继承父级的token
的选项,将其去掉即可:
调用认证接口需用注意的事项
在strapi
中有两种用户,一种是管理员,另外一种是普通登录用户。
所以,我们在API
请求认证用户时,要填写的用户名,密码均是普通用户的,即下图内容管理器下的User用户
,而非管理员用户,管理员只能登录网站后台。
如果你用管理员账号调用api/auth/local
登录接口,就会报400 Bad Request
错误,会提示你用户名或密码不对。
我正在使用strapi
开发uniapp
、微信小程序
或vue
,如果你在使用strapi
时,遇到了问题,请看下方信息,联系我。