我想根据授权或JWT限制对视图模型的访问。我找到了读取模型的示例,但是如何以正确的方式为视图模型实现呢?
答案 0 :(得分:1)
在resolve
框架中,每个视图模型都可以拥有自己的serializer和deserializer。这些函数用于具有非平凡状态对象的视图模型,这些视图对象无法由JSON.stringify
自动序列化并无法在JSON.parse
内还原-例如,对于Immutable.JS或{ {3}}。
实际上seamless-immutable有两个参数-第一个是用于序列化的状态对象,第二个参数是调用者的JWT令牌。由于视图模型始终是从当前客户端(HTTP请求或serializer)调用的,因此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存在且无效,则可以引发错误以限制访问。