我有以下spring-security.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<http auto-config="true">
<intercept-url pattern="/ADMIN/**" access="ROLE_ADMIN" />
<form-login default-target-url="/" login-page="/login.jsp" />
<logout logout-url="/logout" logout-success-url="/" />
</http>
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select user_name,password, enabled from Users where user_name=?"
authorities-by-username-query="select u.user_name, u.role from Users u where u.user_name =?"/>
</authentication-provider>
</authentication-manager>
</beans:beans>
如何在用户登录网站后将用户详细信息放入会话中,如username和user_id等。
答案 0 :(得分:0)
登录后,Session&amp;中已有一个安全上下文。 ThreadLocal的。你可以这样称呼它:
SecurityContextHolder.getContext()...
答案 1 :(得分:0)
您可以检索已登录用户的用户名。然后,您可以使用用户名从数据库中检索用户特定信息。
UserDetails userDetails = (UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String userName = userDetails.getUsername();
或者您始终可以使用HttpSession对象在会话中存储属性。
@RequestMapping(..)
public String myControllerMethod(HttpSession session) {
session.addAttribute("username", "test123");
}
您还可以使用HttpServletRequest对象在会话中存储属性。
@RequestMapping(..)
public String myControllerMethod(HttpServletRequest request) {
request.getSession().setAttribute("userName", "test123");
}