gpt4 book ai didi

java - 在 Spring 中存储 bean 实例

转载 作者:行者123 更新时间:2023-11-28 23:45:08 25 4
gpt4 key购买 nike

我的 Web 应用程序中有一个身份验证方法,它从另一个应用程序获取一个 http 参数。我从数据库加载我的用户并将其存储在一个 spring bean 中。在我的登录 Controller 中,它被实例化了,但是当我将它注入(inject)另一个 Controller 时,它失去了它的属性,当我想联系我的用户时,我得到了“null”。我怎样才能使一个 bean 的属性在所有其他 Controller 中可用?我不想使用静态属性...我试图让 bean 成为“ session 范围”,但它不起作用。

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());
}

最佳答案

真是一团糟!

为什么不使用 Spring Security ?它自动管理Security Context为您设置一组过滤器。您可以在应用的任何位置访问用户信息。

如果不是,您必须在代码中的某处设置 session 中的用户,您不能只是 Autowiring 它。像这样:

@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() 从 session 中获取它

关于java - 在 Spring 中存储 bean 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15172414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com