如何在执行任何操作之前执行方法(检查用户是否已登录)Struts 2

时间:2016-05-02 15:48:07

标签: java struts2 struts2-interceptors

我想检查(会话)用户是否已登录 因此,如果用户试图访问资源(链接)并且他没有连接他 必须重定向到登录页面,我可以验证

//when logging in
sessionMap.put("logined",true);

然后

public String checkLogin() {
//when trying to reach a resource
if ((Boolean) sessionMap.get("logined")) return "Logined";
    else return "notLogined";
}

但我必须在类操作中的每个方法操作中执行此方法 我必须在struts.xml上的每个动作中处理结果

所以,我的问题是使用SessionAware和sessionMap是否存在“轻量级”解决方案:

    private SessionMap<String,Object> sessionMap;

我宁愿'不使用'Spring Security。

1 个答案:

答案 0 :(得分:1)

您可以在prepare()中执行您的方法。要使用此功能,您的操作类应实现Preparable接口。假设操作配置为使用包含此功能的defaultStack拦截器。

Prepare Interceptor:

  

此拦截器调用prepare()实现Preparable的操作。对于在实际执行方法运行之前需要确保某些逻辑运行的任何情况,此拦截器非常有用。

如果您的逻辑超出了操作类的范围,那么请考虑使用自定义拦截器进行身份验证。 Here是身份验证拦截器的一个示例。