struct2 拦截所有没有登录的用户,强行转到登录界面AuthorizationInterceptor

本文介绍了一个自定义的Struts2权限拦截器实现,该拦截器通过检查当前用户的会话来确定是否允许访问特定操作。此外,还展示了如何在struct.xml中配置此拦截器及其忽略的动作列表。
package com.sise.action;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class AuthorizationInterceptor extends AbstractInterceptor {
	private String ignoreActions;

	// ignoreActions属性的getter方法
	public String getIgnoreActios() {
		return ignoreActions;
	}
	// ignoreActions属性的setter方法
	public void setIgnoreActions(String ignoreActions) {
		this.ignoreActions = ignoreActions;
	}
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		ActionContext ctx = invocation.getInvocationContext();
		Map session = ctx.getSession();
		Object user = session.get("currentUserId");
		boolean ignore = false;
		if (user != null || ignore == true) {
			return invocation.invoke();
		} else {
			return Action.LOGIN;
		}
	}
}

  struct.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>
	<package name="default" extends="struts-default">
		<interceptors>
			<interceptor name="loginInterceptor"
				class="com.sise.action.AuthorizationInterceptor"></interceptor>
			<interceptor-stack name="loginDefaultStack">
				<interceptor-ref name="loginInterceptor">
					<param name="ignoreActions">
						validate_code,register.*,.*login.*,upload,connector</param>
				</interceptor-ref>
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="loginDefaultStack"></default-interceptor-ref>
		<global-results>
			<result name="login" type="redirect">/login.html</result>
		</global-results>
		<action name="index" class="com.sise.action.IndexAction"
			method="index">
			<result name="success">/index.html</result>
		</action>
		<action name="login" class="com.sise.action.LoginAction"
			method="login">
			<result type="redirectAction">index</result>
			<result name="login" >/login.html</result>
			<interceptor-ref name="defaultStack"></interceptor-ref>
		</action>
	</package>
</struts>  

  

转载于:https://www.cnblogs.com/taoweiji/p/3248822.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值