Spring security 如何从spring security的登录页面访问额外字段?

Spring security 如何从spring security的登录页面访问额外字段?,spring-security,Spring Security,在spring security的登录页面中,我有公司名、用户名和密码。 当我单击login按钮时,它会重定向到index.jsp。我无法访问index.jsp中的公司名称。 我正在使用获取用户名和密码 SecurityContextHolder.getContext().getAuthentication().getName(); 及 但我想重提公司名称。怎么做 假设您已经登录,您需要从数据库中获取公司名称。首先,您需要实现UserDetails的对象,该对象将保存在UserDetails

在spring security的登录页面中,我有公司名、用户名和密码。 当我单击login按钮时,它会重定向到index.jsp。我无法访问index.jsp中的公司名称。 我正在使用获取用户名和密码

SecurityContextHolder.getContext().getAuthentication().getName(); 


但我想重提公司名称。怎么做

假设您已经登录,您需要从数据库中获取公司名称。首先,您需要实现
UserDetails
的对象,该对象将保存在
UserDetailsService
中,并添加您需要的任何变量(公司等)

而不是在typecast上使用自定义Userdetails实现

CustomUserDetails customDetails (CustomUserDetails)SecurityContextHolder.getContext().getAuthentication().getCredentials();

getCredentials将返回保存到凭据中的内容的
对象。无论它是什么类型,您都可以将它返回到您保存的类。

如果您在成功身份验证后进行转发,则所有请求参数都将在index.jsp中可用,而不是重定向。
public class CustomUserDetails implements UserDetails{      
    private String password;
    private String username;
    private String companyName;
}
CustomUserDetails customDetails (CustomUserDetails)SecurityContextHolder.getContext().getAuthentication().getCredentials();