防止未登录用户操作—struts2拦截器

一般来说,我们的web系统都是只有在用户登录之后才允许操作的,也就是说我们不允许非登录认证的用户直接访问某些页面或功能菜单项。对于struts项目来说就可以定义拦截器来实现。

解决方式

1、定义一个拦截器类(类里面通过判断是否有用户存在session里面,如果没有就拦截要访问的页面)

2、在struts2配置文件中配置拦截器

3、 在要拦截的action中使用拦截器接口

拦截器:

package cn.edu.gxuwz.interceptor;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

import cn.edu.gxuwz.entity.SysUser;

@SuppressWarnings("serial")
public class PrivilegeInterceptor extends MethodFilterInterceptor {

	//执行拦截的方法
	@Override
	protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
		// TODO Auto-generated method stub
				//判断session中是否保存了后台用户的信息
		        SysUser sysUser = (SysUser) ActionContext.getContext().getSession().get("sysUser");
				if(sysUser == null){
					//没有登录就进行访问了
					ActionSupport actionSupport = (ActionSupport) actionInvocation.getAction();
					actionSupport.addActionError("亲,您还没有登录,没有权限访问!");
					return "error";
				}else{
					//已经登录过了
					return actionInvocation.invoke();
				}

	}

}

struts.xml:

<!--配置全局映射视图,捕获所有 异常跳转指定页面  -->
    <package name="base" extends="struts-default">
        <interceptors>   
          <interceptor name="myinterceptor" class="cn.edu.gxuwz.interceptor.PrivilegeInterceptor">   
           </interceptor> 
           <!-- 定义拦截栈 -->
           <interceptor-stack name="loginStack">
               <interceptor-ref name="myinterceptor">
                   <!-- 拦截action中的某些方法 
                   <param name="includeMethods">method1,method2</param> -->
                   <!-- 不拦截action中的某些方法   -->
                   <param name="excludeMethods">webLogin</param> 
               </interceptor-ref>
               <interceptor-ref name="defaultStack"></interceptor-ref>
	        </interceptor-stack> 
       </interceptors> 
    </package>

struts-web.xml:

<!-- 定义系统设置模块 -->
	<package name="biz" extends="base" namespace="/biz">
		<!--系统设置 -->
		<action name="*_*"
			class="cn.edu.gxuwz.action.{1}Action" method="{2}">
			<result name="success">${forwardView}</result>
			<result name="error">${forwardView}</result>
			<result name="input">/error/error.jsp</result>
			<!-- 添加拦截器 -->
	       <interceptor-ref name="loginStack"></interceptor-ref>
		</action>
	</package>

 

转载于:https://my.oschina.net/u/3734228/blog/1925684

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值