我想获取当前登录的用户ID并将其传递给视图。用户使用用户名和密码登录 弹簧security.xml文件
<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.xsd">
<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/panel/**"
access="hasAnyRole('ROLE_USER', 'ROLE_ADMIN')" />
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
<!-- access denied page -->
<access-denied-handler error-page="/403" />
<form-login login-page="/login" login-processing-url="/j_spring_security_check"
authentication-failure-url="/login?error" username-parameter="username"
password-parameter="password" authentication-success-handler-ref="authSuccessHandler" />
<logout logout-url="/j_spring_security_logout" logout-success-url="/" />
<!-- enable csrf protection -->
<csrf />
</http>
<beans:bean id="authSuccessHandler" class="com.terafast.tem.AuthSuccessHandler" />
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select username,password,enabled from users where username=?"
authorities-by-username-query="select u1.username, u2.role from users u1, user_roles u2 where u1.role_id = u2.role_id and u1.username =?" />
</authentication-provider>
</authentication-manager>
</beans:beans>
控制器
@RequestMapping(value = "/request/create", method = RequestMethod.GET)
public String displayVacationRequestPage(Model model) {
Vacation vacation = new Vacation();
model.addAttribute("vacation", vacation);
return "panel/createRequest";
}
有人可以解释我该怎么做?
答案 0 :(得分:0)
您可以添加简单的映射方法
@RequestMapping("/user")
public Principal user(Principal user) {
return user;
}
如果/user
映射可以访问,它将返回当前已验证的用户。请考虑使用@ResponseBody
为您的回复添加注释,具体取决于您如何设置控制器以及您计划如何在视图中使用它。
对于传递特定属性,您可以执行类似
的操作 @RequestMapping(value="/username", method = RequestMethod.GET)
public String printUser(ModelMap model, Principal user) {
String name = user.getName(); //get logged in username
model.addAttribute("username", name);
return "panel/createRequest";
}