Struts拦截器拦截未登录的操作

本文介绍如何创建并应用Struts拦截器来拦截未登录用户的特定操作,确保用户在执行特定功能前已登录。通过自定义拦截器LoginInterceptor.java,可以增强应用程序的安全性和用户体验。
摘要由CSDN通过智能技术生成

首先新建一个拦截器类

//LoginInterceptor.java

package com.stu.interceptor;

import java.util.Map; 
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation; 
import com.opensymphony.xwork2.interceptor.AbstractInterceptor; 

public class LoginInterceptor extends AbstractInterceptor { 

	 private static final long serialVersionUID = 1L;  
	  
	    @Override  
	    public String intercept(ActionInvocation invocation) throws Exception {  
	          
	        String namespace = invocation.getProxy().getNamespace();  
	        String actionName = invocation.getProxy().getActionName();  
	        if(("/".equals(namespace) && "alogin".equals(actionName)) ||   
	                ("/".equals(namespace) && "alogout".equals(actionName))||
	                ("/".equals(namespace) && "nolog".equals(actionName))){
	            return invocation.invoke();
	        } else {
	            Map<String, Object> session = ActionContext.getContext().getSession();  
	            String name = (String) session.get("admin_name");  
	            if(name == null) {  
	            	System.out.println("执行拦截器----------");
	                return "login";  
	            } else {  
	                return invocation.invoke();  
	            }  
	        }       
	    }  
} 
//struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.objectFactory" value="spring" />
<!-- 定义包 -->
	<package name="default" extends="json-default">
	<!-- 添加拦截器 -->  
        <interceptors>  
            <!-- 添加登陆拦截器 -->  
            <interceptor name="loginValidate" class="com.stu.interceptor.LoginInterceptor"/>  
            <!-- 新建一个站,把登陆拦截器和默认的站放进去 -->  
            <interceptor-stack name="myStack">  
                <interceptor-ref name="defaultStack"/>  
                <interceptor-ref name="loginValidate"/>  
            </interceptor-stack>  
        </interceptors>  
          
        <!-- 修改默认拦截器 -->  
        <default-interceptor-ref name="myStack"/>  
          
        <!-- 拦截器未登录跳转 -->  
        <global-results>  
            <result name="login" type="chain">  
                nolog
            </result>  
        </global-results>  
	<action name="alogin" class="adminAction" method="alogin">
	<result name="success">/index.jsp</result>
	<result name="input">/index.jsp</result>
	</action>
	<action name="alogout" class="adminAction" method="alogout">
	<result name="success">/index.jsp</result>
	</action>
	<action name="nolog" class="adminAction" method="nolog">
	<result name="success">/index.jsp</result>
	</action>
	</package>
</struts>
action名不符合且未登录的就拦截下来,返回login。struts.xml配置拦截器,返回login就跳转到nolog.action


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值