使用struts2的拦截器实现权限验证

  1. 一、在struts.xml配置文件中定义拦截器
  2. 二、在需要进行拦截的action中使用拦截器
  3. 三、定义全局结果映射
  4. 四、定义一个拦截器实现类

应用场景:对于需要用户登录的网页进行身份验证,比如未登录不能浏览相关内容并跳转到登录页面。

一、在struts.xml配置文件中定义拦截器

1
2
3
4
5
6
<package name="default" extends="struts-default">
<!-- 定义了一个名为authority的拦截器 -->
<interceptors>
<interceptor name="authority" class="cn.wangsr.AuthorityInterceptor"/>
</interceptors>
</package>

二、在需要进行拦截的action中使用拦截器

1
2
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="authority"></interceptor-ref>

注:第一行为默认拦截器,如果不适用通过拦截器后将会丢失表单所提交数据。

三、定义全局结果映射

如果在多个action中使用了拦截器,可以定义一个全局结果映射来作为拦截器处理后的结果页。

1
2
3
<global-results>
<result name="login">/WEB-INF/contents/index.jsp</result>
</global-results>

四、定义一个拦截器实现类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class AuthorityInterceptor extends AbstractInterceptor{

@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
ActionContext ctx = invocation.getInvocationContext();
User user = (User)ctx.getSession().get("user");//在拦截器获取session中的值

if(user!=null) {
return invocation.invoke();//继续执行其它拦截器或action
}
ctx.put("timeout_tip", "请重新登录");
return Action.LOGIN;//返回字符串所对应的result结果页
}
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

文章标题:使用struts2的拦截器实现权限验证

本文作者:子非鱼

发布时间:2018-11-04, 11:19:29

最后更新:2018-10-07, 09:01:14

原始链接:https://Wangsr.cn/2018/11/04/2018-2018-09-06-使用struts2的拦截器实现权限验证/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏