gpt4 book ai didi

java - Spring登录显示用户信息

转载 作者:行者123 更新时间:2023-12-01 13:16:09 25 4
gpt4 key购买 nike

嗨,我创建了 Spring Security 3.1、hibernate 4.1.8、Spring MVC、JSP 的实现

<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="customUserDetailsService">
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>

但我不知道如何显示 Spring Security 的登录的其他值,ejm lastname_user。

@Service
@Transactional(readOnly=true)
public class CustomUserDetailsService implements UserDetailsService{

@Autowired
UsersDao usersDao;
@Override
public UserDetails loadUserByUsername(String login)
throws UsernameNotFoundException {
Users domainUser = usersDao.getUser(login);

boolean accountNonExpired = true;
boolean credentialsNonExpired = true;
boolean accountNonLocked = true;
return new SecurityUser(
domainUser.getLogin(),
domainUser.getPassword(),
domainUser.getEnabled(),
accountNonExpired,
credentialsNonExpired,
accountNonLocked,
getAuthorities(domainUser.getauthorities().getId()),
domainUser.getLastName_user());
}

我的安全用户

public class SecurityUser extends org.springframework.security.core.userdetails.User{
private static final long serialVersionUID = 1L;
private Users user;
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}

public SecurityUser(String username, String password, boolean enabled,
boolean accountNonExpired, boolean credentialsNonExpired,
boolean accountNonLocked,
Collection<? extends GrantedAuthority> authorities,String lastname_user) {
super(username, password, enabled, accountNonExpired, credentialsNonExpired,
accountNonLocked, authorities);
}

我可以登录,并向用户显示 #{request.userPrincipal.name},但我想使用 @Controller 和 (UserDetails)SecurityContextHolder.getContext().getAuthentication()。获取主体();为了通过controller/jsp显示我的用户登录的其他值,互联网上的示例使用System.out.println,但有一种方法可以在表格中显示,thnks。

最佳答案

我猜你有一个标准的 Spring MVC 设置。如果您需要配置支持,请查看此:http://fruzenshtein.com/spring-mvc-creation-of-simple-controller-with-java-based-config/

创建/扩展 Controller

@Controller
public final class ExampleController {

@Autowired
protected UserDetailsService userService;

@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView index(ModelAndView mav) {

UserDetails user = (UserDetails) SecurityContextHolder.getContext().getAuthentication(). getPrincipal();

mav.add("user", user);
return mav;
}

}

创建index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<h1>This is my famous index page!</h1>

<c:when test="${not empty user}">
<table>
<th>
<td>Username</td>
<td>Enabled</td>
...
</th>
<tr>
<td>${user.username}</td>
<td>${user.enabled}</td>
...
</tr>
</table>
</c:when>

玩得开心!

编辑:如果您想从数据库加载用户对象的详细版本 - 可能包含有关用户的附加信息,例如性别,... - 扩展UserDetailService,添加一个返回Users对象的方法(例如:

public Users loadUserByUsernameDetail(String login) {
return usersDao.getUser(login);
}

并将此对象添加到 ModelAndView (ExampleController):

UserDetails user = (UserDetails)SecurityContextHolder.getContext().getAuthentication(). getPrincipal();
Users users = userService.loadUserByUsernameDetail(user.getUsername);
mav.add("user", users);

关于java - Spring登录显示用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448394/

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