5.获取当前登录用户

获取当前登录用户

传统web系统中,我们将登陆成功的用户放入session中,在需要的时候,可以从session中获取用户,那么spring Security中我们可以从以下两个类获得当前已经登录的用户

  • SecurityContextHolder

    保留系统当前的安全上下文 SecurityContext,其中就包括当前使用系统的用户信息

  • SecurityContext

    安全上下文,获取当前经过身份验证的主体或身份验证请求令牌

代码实现如下(security获取当前登录用户的三种方式):

 /**
     * 获取当前登录用户
     * @return
     */
    @GetMapping("/loginUser1")
    @ResponseBody
    public UserDetails getCurrnetUser1(Authentication authentication){
        UserDetails userDetails = (UserDetails) authentication.getPrincipal();
        return userDetails;
    }
    /**
     * 获取当前登录用户
     * @return
     */
    @GetMapping("/loginUser2")
    @ResponseBody
    public UserDetails getCurrnetUser2(){
        UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        return userDetails;
    }
    /**
     * 获取当前登录用户
     * @return
     */
    @GetMapping("/loginUser3")
    @ResponseBody
    public UserDetails getCurrnetUser3(@AuthenticationPrincipal UserDetails userDetails){
        return userDetails;
    }

登录之后直接访问接口,测试结果如下

 

posted @ 2023-03-15 16:38  __破  阅读(155)  评论(0)    收藏  举报