使用拦截器完成权限控制

来源:互联网 发布:php接口验证 编辑:程序博客网 时间:2024/05/22 05:16

权限检查拦截器类的代码如下:

package org.crazyit.app.interceptor;import com.opensymphony.xwork2.*;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;import java.util.*;//权限检查拦截器继承AbstractInterceptor类public class AuthorityInterceptorextends AbstractInterceptor{//拦截Action处理的拦截方法public String intercept(ActionInvocation invocation)throws Exception{//取得请求相关的ActionContext实例ActionContext ctx = invocation.getInvocationContext();Map session = ctx.getSession();//取出名为user的Session属性String user = (String)session.get("user");//如果没有登录,或者登录所用的用户名不是scott,都返回重新登录if (user != null && user.equals("crazyit.org") ){return invocation.invoke();}//没有登录,将服务器提示设置成一个HttpServletRequest属性ctx.put("tip" ,"您还没有登录,请输入crazyit.org,leegang登录系统");//直接返回login的逻辑视图return Action.LOGIN;}}

为了实现拦截器类,首先在struts2中定义该拦截器,并使用

<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN""http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts><constant name="struts.custom.i18n.resources" value="mess"/><constant name="struts.i18n.encoding" value="GBK"/><package name="lee" extends="struts-default"><!-- 用户拦截器定义在该元素下 --><interceptors><!-- 定义了一个名为authority的拦截器 --><interceptor name="authority" class="org.crazyit.app.interceptor.AuthorityInterceptor"/></interceptors><!-- 定义全局Result --><global-results><!-- 当返回login视图名时,转入login.jsp页面 --><result name="login">/WEB-INF/content/login.jsp</result></global-results><action name="loginPro" class="org.crazyit.app.action.LoginAction"><result name="error">/WEB-INF/content//error.jsp</result><result name="success">/WEB-INF/content/welcome.jsp</result></action><!-- 定义一个名为viewBook的Action,其实现类为ActionSupport --><action name="viewBook"><!-- 返回success视图名时,转入/WEB-INF/content/viewBook.jsp页面 --><result>/WEB-INF/content/viewBook.jsp</result><interceptor-ref name="defaultStack"/><!-- 应用自定义拦截器 --><interceptor-ref name="authority"/></action><action name="*"><result>/WEB-INF/content/{1}.jsp</result></action></package></struts>


0 0