【发布时间】:2019-06-15 21:04:54
【问题描述】:
我想根据授权或 JWT 限制对视图模型的访问。我找到了读取模型的示例,但是如何以正确的方式为视图模型实现它?
【问题讨论】:
标签: resolvejs
我想根据授权或 JWT 限制对视图模型的访问。我找到了读取模型的示例,但是如何以正确的方式为视图模型实现它?
【问题讨论】:
标签: resolvejs
在resolve 框架中,每个视图模型都可以拥有自己的serializer 和deserializer。这些函数用于具有非平凡状态对象的视图模型,它们不能被JSON.stringify 自动序列化并在JSON.parse 内恢复 - 例如,它对Immutable.JS 或seamless-immutable 很有用。
事实上serializer 有两个参数——第一个是用于序列化的状态对象,第二个参数是来自调用者的 JWT 令牌。由于视图模型总是从当前客户端调用,无论是 HTTP 请求还是API handler,JWT 令牌始终存在并可用于访问限制
const serializeState = (state, jwtToken) => {
if(jwtToken != null && !isGoodToken(jwtToken)) { // JWT token is present and custom validation failed
throw new Error('Access denied')
}
return JSON.stringify(state) // Or custom serialize procedure
}
export default serializeState
重要提示:在jwtToken 缺席的情况下不要限制序列化状态访问,因为它用于快照适配器的内部目的。如果第二个参数未定义,则始终允许返回序列化状态。否则,如果 jwtToken 存在且无效,则会抛出错误以限制访问。
【讨论】: