spring - 在 Spring Boot MVC 中跨控制器处理用户凭据的最佳方法是什么
问题描述
我想将代码从控制器上移到全局位置。此用户名和角色可以在控制器之间存储和共享,避免在每个请求中重新执行此代码。
@RequestMapping(path = {""})
public String clientHome(Model model, Principal principal){
..........
..........
KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) principal;
KeycloakPrincipal keycloakprincipal=(KeycloakPrincipal)token.getPrincipal();
KeycloakSecurityContext session = keycloakprincipal.getKeycloakSecurityContext();
AccessToken accessToken = session.getToken();
String role = ((KeycloakAuthenticationToken) principal).getAuthorities().toString().replace("ROLE_","");
model.addAttribute("username", accessToken.getGivenName() +" "+accessToken.getFamilyName());
model.addAttribute("role", role);
return "home";
}
解决方案
推荐阅读
- jquery - 仅当动态创建的类匹配时拖放
- visualization - Pyvista 已经是一个完整的库了吗?[2021年1月]
- python - 使用 BeautifulSoup 4 引用 Html 标签内的两个类
- java - 如何在 JUnit 5 中使用 JUnitCore 运行参数化测试?
- javascript - 如何查看 React Router v6 中的查询字符串是否发生变化?
- mysql - 在 SQL_sever 中打开 MYSQL json_array 数据
- excel - 使用索引和匹配函数返回包含关键字“VAC”的特定单元格
- lua - LUA - IsMouseButtonPressed 对于 G 按钮无法正常工作
- html - 纯CSS中的视差效果在Firefox上不起作用
- linux - 如何访问此类目录