В resolve
фреймворке каждая модель представления может иметь собственный сериализатор и десериализатор .Эти функции используются для моделей представления, которые имеют нетривиальный объект состояния, который не может быть автоматически сериализован с помощью JSON.stringify
и восстановлен в JSON.parse
- например, это полезно для Immutable.JS или seamless-immutable .
Фактически serializer имеет два аргумента - первый - это объект состояния для сериализации, а второй - это токен JWT из invoker.Поскольку view-модель всегда вызывается из текущего клиента, либо HTTP-запрос, либо API-обработчик , токен 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 присутствует и недействителен, может быть выдана ошибка для ограничения доступа.