如何注入用户名(不是身份验证)?

时间:2018-09-06 13:45:33

标签: java spring spring-boot authentication aop

在我的spring boot应用程序的其余控制器中,我成功注入了Authentication实例以获取会话的用户信息。

但是,在所有这些控制器中,我目前都这样调用一个辅助方法:

@GetMapping
public List<String> getData(Authentication auth) {
    String username = auth.getName().replaceFirst(".*?\\\\", ""); // to remove windows domain name
    // the rest of these methods only use variable `username`, never `auth`
}

如何减少此代码重复?

1 个答案:

答案 0 :(得分:4)

您可以按以下方式创建实用程序类,然后在任何需要的地方像这样UserUtility.getUsername()使用它。

public class UserUtility {

    public static String getUsername(){
        if (SecurityContextHolder.getContext() != null && SecurityContextHolder.getContext().getAuthentication() != null) {
            return SecurityContextHolder.getContext().getAuthentication().getPrincipal());
        }
        return null;
    }
}