【发布时间】:2011-04-03 03:01:16
【问题描述】:
我正在使用 spring mvc、spring security 和 hibernate 开发一个 Web 应用程序。
有什么方法可以自动设置会话中的对象与用户凭据?我的意思是,我有当前代码,我在其中手动将用户对象设置为会话:
@RequestMapping(value = { "/privados/procesarLogin",
"/sesiones/procesarLogin" }, method = RequestMethod.GET)
public ModelAndView procesarLogin(HttpServletRequest req) {
ModelAndView mav = new ModelAndView();
String usuario = (String) SecurityContextHolder.getContext()
.getAuthentication().getCredentials();
Usuario usuarioSesion = us.retornarUsuario(usuario);
HttpSession sesion = req.getSession(true);
sesion.setAttribute("usuarioSesion", usuarioSesion);
mav.setViewName("/privados/principal");
return mav;
}
但我成功地创建了用户对象并在他的登录成功通过身份验证后自动将其设置为会话。 我应该如何配置我的 xml 文件?我现在是:
//标题
<global-method-security secured-annotations="enabled" />
<http auto-config="true" access-denied-page="/app/sesiones/procesarLogin">
<logout logout-success-url="/app/sesiones/login" />
<form-login authentication-failure-url="/app/sesiones/login?error=true"
login-page="/app/sesiones/login" default-target-url="/app/sesiones/procesarLogin" />
<intercept-url pattern="/app/privados/*" access="ROLE_USER" />
</http>
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="Select usuario, contrasena,true from Usuarios where usuario=?"
authorities-by-username-query="Select usuario, role from Usuarios where usuario=?" />
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>
<beans:bean id="jasyptPasswordEncryptor"
class="org.jasypt.util.password.BasicPasswordEncryptor" />
<beans:bean id="passwordEncoder" class="org.jasypt.spring.security3.PasswordEncoder">
<beans:property name="passwordEncryptor">
<beans:ref bean="jasyptPasswordEncryptor" />
</beans:property>
</beans:bean>
我希望你的帮助 提前致谢!
【问题讨论】:
-
我无法回答您的问题,但前几天我正在查看 spring api 并找到了 DefaultSessionAttributeStore。它允许您在控制器的会话中设置和删除某些属性,如下所示: public ModelAndView procesarLogin(DefaultSessionAttributeStore status, WebRequest request) {...status.storeAttribute(request, attributeName, attributeValue); status.cleanupAttribute(request, attributeName);}
标签: java spring-mvc spring-security