我的Web应用程序中有一个验证方法,它从另一个应用程序获取一个http参数。我从数据库加载我的用户并将其存储在一个spring bean中。在我的登录控制器中它被实例化,但是当我将它注入另一个控制器时,它会丢失其属性,当我想要联系我的用户时,我会得到“null”。如何在所有其他控制器中提供bean的属性?我不想使用静态属性...我试图使bean'session scoped',但它不起作用。
suerBean:
@Service
@SessionScoped
public class SessionUserBean {
public Dolgozo user;
public Boolean userIsDolgozo;
public Boolean userIsIranyito;
public Boolean userIsVezeto;
public Boolean userIsOsztalyVezeto;
public void setUser(Dolgozo user) {
this.user = user;
}
public Dolgozo getUser() {
return user;
}
}
我设置了用户属性的值:
@Autowired
private SessionUser sessionUser;
@Autowired
private SessionUserBean user;
@Autowired
private HttpServletRequest request;
@RequestMapping("index.htm")
public String doLogin(@RequestParam String token) {
if (login.isUserAuthanticated(token)) {
user.setUser(sessionUser.getDolgozo());
return "sikeresBelepes";
}
return "sikertelenBelepes";
}
这就是我想要使用的地方:
@Autowired
private SessionUserBean user;
public void setUp() {
employees = drp.findByCsoportID(user.getUser().getCsoportid().getId());
}
答案 0 :(得分:0)
多么糟糕!
为什么不使用Spring Security?它会通过设置一组过滤器自动为您管理Security Context。您可以在应用的任何位置访问用户信息。
如果不是,您必须在代码中的某个位置设置您的用户,您不能只是自动装配它。像这样:
@RequestMapping("index.htm")
public String doLogin(@RequestParam String token) {
if (login.isUserAuthanticated(token)) {
user.setUser(sessionUser.getDolgozo());
return "sikeresBelepes";
session.addAttribute("securityUser", user);
}
return "sikertelenBelepes";
}
然后从getAttribute()