javascript - ScopeKey 在 nuxt.js auth 模块中不起作用
问题描述
最近我开始学习如何使用 Nuxtjs,在学习如何使用它的 Auth 模块时遇到了一个问题。
我能够登录并且我想检查帐户的范围,我尝试使用“Auth”的“scopeKey”属性来进行。从后端我从数据库中获得“范围”,它可以是“用户”或“管理员”。
我试图设置范围
scopeKey: 'scope'
但是我在检查时发现范围是“未定义”/“空”
this.$auth.hasScope('admin') / this.$auth.hasScope('user')
或“this.$auth.hasScope(admin)”将“scopeKey”设置为时返回一个空值
scopeKey: 'data.scope'
或者
scopeKey: 'user.scope'
这是我的身份验证策略:
auth: {
strategies: {
local: {
scopeKey: 'scope',
endpoints: {
login: {
url: 'api/auth/login',
method: 'post',
propertyName: 'token',
},
logout: {
url: 'api/auth/logout',
method: 'get'
},
user: {
url: 'api/me',
method: 'get',
propertyName: data
}
}
}
},
redirect: {
login: '/auth/login',
logout: '/',
callback: '/auth/login',
home: '/dash/'
}
}
这是我登录时auth模块读取的json示例:
"data": {
"id": 2,
"name": "test1",
"email": "test@test.com",
"email_verified_at": null,
"scope": "admin",
"created_at": "2019-08-01 13:11:49",
"updated_at": "2019-08-01 13:11:49"
},
我可以访问前端页面上的范围值
$auth.user.scope
或与
$auth.$state.user.scope
但是如何在设置“auth”属性/策略时将“范围”赋予 nuxt.config.js 文件中的“scopeKey”属性?
编辑:
我已经尝试将它移动到 auth 对象中或删除该属性,但我仍然得到错误$auth.hasScope('admin')
,$auth.hasScope('user')
这意味着scopeKey
仍然未定义,我不知道为什么。
解决方案
默认情况下,scopeKey 是“范围”。您无需再次设置。
对我来说,它通过进行服务器端更改来工作。
当我将字符串值放入范围时,它不起作用
$data['scope'] = "admin";
但是当我把它改成数组时,就$auth.hasScope('admin')
可以了;
$data['scope'] = array("admin", "test");
希望能帮助到你。
推荐阅读
- javascript - 使用从 Alphavantage 返回的 axios 对象更新 reactjs 状态
- c# - 为什么这个 C# 脚本会导致在 Unity 中循环的游戏对象之间出现延迟峰值?
- android - Android Oreo+:AppWidget 点击不调用 JobIntentService.onHandleWork()
- javascript - 函数在调用时正常运行,但总是返回 undefined
- python - 无法从 gevent 导入 wsgi
- android - BoxStore 中的最大盒子数
- reactjs - 在通用 React 应用程序上存储 JWT 令牌
- ios - 如何在不同的故事板中对导航堆栈中的某些视图控制器执行推送 segue?
- python-3.x - 从两个列表创建 dict,具有 1:2 键:值关系
- python - 如何从字典中的字典中删除重复条目?