我的web应用程序中有一个身份验证方法,它从另一个应用程序获得http参数。我从数据库中加载用户并将其存储在一个spring bean中。在我的登录控制器中它被实例化了,但是当我将它注入另一个控制器时,它失去了它的属性,当我想要到达我的用户时我得到'null'。如何使bean的属性在所有其他控制器中可用?我不想使用静态属性…我试图使bean '会话作用域',但它不起作用。
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;
}
}
设置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());
}
真是一团糟!
为什么不使用Spring Security?它通过设置一组过滤器为您自动管理安全上下文。你可以在应用程序的任何地方访问用户信息。
如果没有,你必须在代码的某个地方设置你的user in会话,你不能只是自动安装它。这样的:
@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()