如何打印用户的名字和姓氏<sec:authentication property="principal.username"/>
这principal.username
仅打印用户 ID。但我想在这里打印数据库中的用户名和姓。可能吗?
如何打印用户的名字和姓氏<sec:authentication property="principal.username"/>
这principal.username
仅打印用户 ID。但我想在这里打印数据库中的用户名和姓。可能吗?
我猜你在谈论 Spring Security。
这是我使用的解决方案:
创建一个将映射您的用户的类。它必须实现接口org.springframework.security.core.userdetails.UserDetails:
public class MyUserDetails implements UserDetails {
private String username;
private String password;
private String firstname;
private String lastname;
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
// Etc.
}
创建一个org.springframework.security.core.userdetails.UserDetailsService的实现,它将从数据库中加载您的用户:
@Component
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private MyUserDAO userDAO;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
final MyUserDetails user = userDAO.getUserByUsername(username);
if(user == null) {
throw new UsernameNotFoundException("No user found for username '" + username +"'.");
}
return user;
}
}
现在您必须告诉 Spring Security 使用您的服务从您的用户那里加载详细信息:
<authentication-manager>
<user-service id="myUserDetailsService"/>
</authentication-manager>
现在您应该能够使用<sec:authentication property="principal.firstname"/>
和<sec:authentication property="principal.lastname"/>
显示当前用户的名字和姓氏。