"打印用户的名字和姓氏-6ren"> "打印用户的名字和姓氏-如何从 打印用户的名字和姓氏 这principal.username仅打印用户 ID。但我想在这里从数据库中打印用户的名字和姓氏。是否可以? 最佳答案 我猜你在谈论 Spring Security。-6ren">
gpt4 book ai didi

java - 在 Spring 中如何从 ""打印用户的名字和姓氏

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:02 24 4
gpt4 key购买 nike

如何从 <sec:authentication property="principal.username"/> 打印用户的名字和姓氏

principal.username仅打印用户 ID。但我想在这里从数据库中打印用户的名字和姓氏。是否可以?

最佳答案

我猜你在谈论 Spring Security。

这是我使用的解决方案:

创建一个将映射您的用户的类。它必须实现接口(interface) 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.UserDetailsS​​ervice 的实现,它将从数据库加载您的用户:

@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"/>显示当前用户的名字和姓氏。

关于java - 在 Spring 中如何从 "<sec:authentication property="principal.username"/>"打印用户的名字和姓氏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17297322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com