Strapi V4疑问:获取已认证用户权限接口返回与配置不符
Strapi V4权限接口返回enabled全为false的原因及解决办法
首先要明确:你调用的
GET /users-permissions/permissions接口,返回的是系统所有权限的全局启用状态,而非当前认证用户所属角色的实际授权状态。这里的enabled: false指的是该权限是否被系统允许作为可配置项存在,和你给Authenticated角色配置的权限完全是两回事。如果你想获取当前已认证用户的实际权限,正确的方式有两种:
- 从当前用户的JWT令牌中解析出
role.id,然后调用GET /users-permissions/roles/{roleId}接口,这个接口返回的内容才是对应角色下所有已配置的权限状态,和你在后台设置的一致。 - 在自定义业务逻辑(比如控制器、服务)中,使用Strapi内置方法获取:
const userPermissions = await strapi.service('plugin::users-permissions.user').getPermissions(currentUser);
- 从当前用户的JWT令牌中解析出
验证权限配置是否生效:即使
GET /users-permissions/permissions返回enabled全为false,只要你在后台给Authenticated角色开启了Playlist的相关权限,实际调用GET /api/playlists这类业务接口时,已认证用户应该能正常访问,这说明你的权限配置是有效的,只是调用的接口不对。
内容的提问来源于stack exchange,提问作者gordie
相关产品推荐
相关产品推荐

