首页 > 解决方案 > 在 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";
    }

标签: springspring-bootkeycloak

解决方案


推荐阅读