Для проекта я создал сервер авторизации с весенней загрузкой и сервер ресурсов.Я реализовал поток паролей oauth2.Я также создаю угловое веб-приложение, которое будет использовать данные конечных точек сервера ресурсов.Сервер ресурсов проверяет токен с помощью сервера авторизации.
Я хотел бы знать, как лучше всего передать информацию о пользователе после входа в систему. Мне нужна такая информация, как роли / идентификатор пользователя, чтобы показать другую страницу, скрыть определенные функции или собрать данные пользователя с сервера ресурсов с помощьюполученный токен.
Я создал CustomTokenEnhancer, который может добавить дополнительную информацию к моему ответу на токен.
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
final Map<String, Object> additionalInfo = new HashMap<>();
User user = (User) authentication.getPrincipal();
additionalInfo.put("id", user.getId());
additionalInfo.put("username", authentication.getName());
additionalInfo.put("organization", user.getOrganization());
additionalInfo.put("roles", user.getRoles());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
return accessToken;
}
Это пример ответа после запроса токена.
{
"access_token": "233fda99-3ff7-4766-bfa3-3b211280c64f",
"token_type": "bearer",
"refresh_token": "286e7324-9b8a-46de-a0c7-45e21be552d4",
"expires_in": 35999,
"scope": "read write",
"organization": "organization",
"roles": [
{
"id": "1",
"createdAt": null,
"name": "ROLE_admin",
"permissions": [
{
"id": "1",
"createdAt": null,
"name": "create_profile"
},
{
"id": "2",
"createdAt": null,
"name": "read_profile"
},
{
"id": "3",
"createdAt": null,
"name": "update_profile"
},
{
"id": "4",
"createdAt": null,
"name": "delete_profile"
}
]
}
],
"id": 1,
"username": "test"
}
Безопасно ли хранить информацию, например, роль в localalstorage, и использовать ее для принятия решения, какие элементы скрыть / показать в моем веб-приложении?