0

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

超级豆:

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

1 回答 1

0

真是一团糟!

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

如果不是,您必须在代码中的某处设置会话中的用户,您不能只是自动装配它。像这样:

@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()

于 2013-03-03T10:20:26.170 回答