我想检查(会话)用户是否已登录 因此,如果用户试图访问资源(链接)并且他没有连接他 必须重定向到登录页面,我可以验证
//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。
答案 0 :(得分:1)
您可以在prepare()
中执行您的方法。要使用此功能,您的操作类应实现Preparable
接口。假设操作配置为使用包含此功能的defaultStack
拦截器。
此拦截器调用
prepare()
实现Preparable
的操作。对于在实际执行方法运行之前需要确保某些逻辑运行的任何情况,此拦截器非常有用。
如果您的逻辑超出了操作类的范围,那么请考虑使用自定义拦截器进行身份验证。 Here是身份验证拦截器的一个示例。