天天看点

struts2如何使用拦截器进行用户权限控制

大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对vip开放等等,这些权限的控制都可以用struts2中的拦截器来实现。

下面通过一个简单的demo来模拟这种用户权限控制的实现流程,设定三种不同身份的用户,commen为普通用户,vip为会员用户,还有一种admin为管理员。

先看一下demo的整体结构:

struts2如何使用拦截器进行用户权限控制

首先搭建struts2框架的开发环境(前面博客中有介绍),环境搭建完之后又再看一看如何配置struts.xml:

其中,<global-results></global-results>是全局的result,有很多时候一个<result>可供很多<action>使用,这时可以使用<global-results>标签来定义全局的<result>。执行顺序:当一个action返回的string没有相应的<result>与之对应,struts2就会查找全局的<result>,所以本次模拟测试中不符合条件被拦截的请求都会转到error.jsp。

action类,不做处理,全部放行,让拦截器处理:

inteceptor(拦截器类):

只是 模拟拦截器的实现思路,没有持久层的数据,这里的方法是使用invocation.getproxy().getactionname()方法来获取struts.xml中配置的action名称,和用户表单提交的名称做对比,如果输入的用户名是以action名开头的,就放行,否则拦截。

登录jsp:

拦截后跳转页:

访问资源代码:

其余admin.jsp等界面没有内容,只是为了区分实现跳转页面不同。

运行结果:

使用commen角色登录:

struts2如何使用拦截器进行用户权限控制

点击vip以及admin跳转链接时:

struts2如何使用拦截器进行用户权限控制

当点击commen链接时成功跳转,这样就实现了用户权限的控制。