使用拦截器完成权限控制

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

package org.crazyit.app.interceptor;

import com.opensymphony.xwork2.*;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

import java.util.*;


//权限检查拦截器继承AbstractInterceptor类
public class AuthorityInterceptor
	extends 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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值