我正在尝试在一个简单的React应用程序上使用Loopback学习身份验证。
我试图列出Pets
,我将其设置为仅在用户通过身份验证时才可访问。
当前pet.json
文件中的ACLS部分如下所示(这是遵循Loopback CLI的结果):
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$unauthenticated",
"permission": "DENY"
}
]
为了登录用户,我目前在客户端具有以下代码:
handleLogin () {
const credentials = {
email: '[email protected]',
password: '123'
}
return axios.post('http://localhost:3000/api/Users/login', credentials)
.then((result)=> {
console.log('Login result:', result) // result object comes in just fine
const token = result.data.id
localStorage.setItem('jwtToken', token)
return axios.get('http://localhost:3000/api/Pets')
.then( res => {
console.log('res', res)
this.setState({pets: res.data})
})
})
}
我想念什么吗?令牌是否必须在应用程序中的其他位置设置?
最佳答案
对于模型中的身份验证:
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW"
}
您还指定了属性:
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW",
"property": ["create"]
}
供DENY EveryOne使用:
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
}
请参阅此链接:LoopBack authentication
您需要在标头中传递accessToken:
ACCESS_TOKEN=6Nb2ti5QEXIoDBS5FQGWIz4poRFiBCMMYJbYXSGHWuulOuy0GTEuGx2VCEVvbpBK
# Authorization Header
curl -X GET -H "Authorization: $ACCESS_TOKEN" \
http://localhost:3000/api/widgets
# Query Parameter
curl -X GET http://localhost:3000/api/widgets?access_token=$ACCESS_TOKEN
关于javascript - 认证后无法访问需要认证事件的端点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48199298/