我正在通过尝试创建一个简单但功能强大的网页来学习Spring MVC框架。
我想知道是否可以通过调用“new”运算符来覆盖会话bean ...
我创建了会话范围的bean,它引用了当前用户。如果未记录用户,则默认bean将与guest参数一起使用。
<bean id="currentUser" class="pl.home.models.User" scope="session">
<aop:scoped-proxy />
</bean>
然后,在我的控制器中,我将代码放在下面:
@Autowired @Qualifier("currentUser")
protected User user;
当用户尝试登录时,我想通过调用:
来覆盖用户的实例 user = new User(email, password);
以上代码将仅“本地”覆盖用户实例。 Spring容器中bean的实例将保持不变。
是否可以覆盖Spring容器中的用户实例?或者也许我的方法完全错了?
谢谢,Mariusz
答案 0 :(得分:1)
基本上我通过Java EE HttpSession
解决它你可以使用相同的方法。用户登录成功后,创建一个currentUser对象并将其设置为HttpSession
,如下所示:
public void loginPost(HttpServletRequest request){
//After sucessfull login
User currentUser=initializeCurrentUser();
HttpSession session=request.getSession();
session.setAttribute(SessionToken.NAME, currentUser);
}
如果没有使用默认用户设置登录初始化currentUser并设置为session。如果您想知道集群环,可以将此currentUser保存到db并将recordId设置为session并在需要时进行查询。