`

struts2根据拦截器实现链接的权限管理

 
阅读更多
首先在struts.xml的配置中添加拦截器
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<constant name="struts.objectFactory" value="spring"></constant>
	<constant name="struts.action.extension" value="action,xhtml" />
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<constant name="struts.custom.i18n.resources"
		value="com.gd.resource.template.LabelResources,com.gd.resource.privilege.LabelResources"></constant>
	<package name="ehrDefault" extends="struts-default">
		<result-types>
			<result-type name="tiles"
				class="org.apache.struts2.views.tiles.TilesResult" />
		</result-types>
		<interceptors>
			<interceptor name="admin"
				class="com.XX.interceptor.AdminInterceptor" />
			<interceptor-stack name="requireLogin">
				<interceptor-ref name="defaultStack" />
				<interceptor-ref name="admin" />
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="requireLogin" />
		<global-results>
			<result name="login" type="redirect">/index.jsp</result>
		</global-results>......

然后是拦截器类:
package com.gd.interceptor;

import java.util.Map;

import javax.servlet.ServletContext;

import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.gd.po.Userinfo;
import com.gd.service.ISecurityPermissionManager;
import com.gd.service.ISecurityUserManager;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class AdminInterceptor extends AbstractInterceptor {
	
	private static final long serialVersionUID = 7426957840297915277L;
	@Override
	public String intercept(ActionInvocation ai) throws Exception {
		Map<String, Object> session = ai.getInvocationContext().getSession();
		if (session == null) {
			return Action.LOGIN;
		}
		Userinfo user = (Userinfo) session.get("user");
		if (user == null) {
			session.put("message", "请先登录!");
			return Action.LOGIN;
		}
		
		// 用户访问Action权限判断
		if (!actionAuthority(ai, session)) {
			return Action.LOGIN;
		}

		return ai.invoke();
	}
	public boolean actionAuthority(ActionInvocation ai, Map<String, Object> session) {
		// 用户访问Action权限判断
		ServletContext sc = ServletActionContext.getServletContext();
                //此处获取请求的action及其方法
		String permission = ai.getProxy().getActionName().toLowerCase() + "." + ai.getProxy().getMethod().toLowerCase();
		ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(sc);
		ISecurityUserManager securityUserManager = (ISecurityUserManager) context.getBean("securityUserManager");
		ISecurityPermissionManager securityPermissionManager = (ISecurityPermissionManager) context.getBean("securityPermissionManager");
                //查询数据库是否有相同的链接有相同的则有权限访问
		if(!securityPermissionManager.checkIsRepeatPermission(permission)){
			return true;
		}
		if(securityUserManager!=null){
			Userinfo userInfo=(Userinfo)session.get("user");
			return securityUserManager.checkPrivilege(userInfo.getUserName(),permission);
		}
		return true;
	}
}
分享到:
评论

相关推荐

    Struts1 拦截器(SAIF)的使用

    拦截器在Struts1中扮演着重要角色,它允许开发者在动作执行前后插入自定义的逻辑,比如日志记录、权限验证、事务管理等。SAIF插件是Struts1中一个特定的拦截器实现,用于增强框架的功能。 **1. Struts1 拦截器原理*...

    struts2拦截器实例

    在这个“Struts2拦截器实例”中,我们将探讨如何利用Struts2的拦截器机制来实现用户权限管理,确保只有已登录的用户才能访问特定的页面或执行特定的操作。 首先,让我们理解一下什么是拦截器。在Struts2中,拦截器...

    struts2拦截器详解 带demo

    总的来说,Struts2的拦截器机制使得开发者能够轻松地添加自定义行为,提高了代码的复用性和模块化,是实现复杂业务逻辑和增强应用程序功能的重要工具。通过理解并熟练使用拦截器,可以极大地提高Struts2应用的灵活性...

    Struts2框架实现图书管理系统

    总的来说,"Struts2框架实现图书管理系统"是一个实践性的项目,涵盖了Struts2的基础应用和拦截器的使用,对于理解和掌握Struts2框架有着极大的帮助。通过这个项目,开发者不仅可以学习到如何构建一个完整的Web应用,...

    Struts2+SQL Server实现登录

    在"Struts2+SQL Server实现登录"项目中,开发者利用Struts2的拦截器机制和Action类来处理用户的登录请求。Struts2拦截器能够对HTTP请求进行预处理和后处理,如验证用户输入、记录日志等。Action类是业务逻辑的载体,...

    struts2连接mysql数据库登录验证程序

    5. **拦截器(Interceptor)**:Struts2的拦截器是处理请求的重要机制,可以实现诸如权限检查、日志记录、事务管理等功能。在这个登录验证程序中,可能会使用预定义的Interceptor如ValidationInterceptor进行表单...

    struts2框架做的学生信息查询系统

    3. **拦截器(Interceptors)**:Struts2的拦截器机制允许在Action执行前后插入额外的功能,如日志记录、权限检查、事务管理等。在描述中提到的分页和模糊查询可能就是通过拦截器实现的,这些功能可以被抽离出来,...

    基于struts2商品管理项目

    项目可能使用了Struts2的拦截器(Interceptor)机制,如LoginInterceptor,来检查用户是否已登录,只有登录成功的管理员才能执行管理操作。同时,还需要实现角色和权限的管理,确保不同角色的用户只能访问其权限范围...

    struts2的学生管理系统

    为了增强功能和性能,Struts2使用拦截器来处理通用的任务,如日志、权限检查、事务管理等。这些拦截器可以在Action执行前或执行后运行,使得代码更加模块化和可复用。 总的来说,"Struts2的学生管理系统"项目是一个...

    基于Struts2实现报道管理系统

    **基于Struts2实现报道管理系统** Struts2是一款强大的MVC框架,用于构建Java Web应用程序。在报道管理系统中,Struts2起到了核心架构的作用,它提供了模型-视图-控制器的设计模式,使得开发者能够更有效地组织和...

    Spring+struts2+hibernate+easyui基础权限管理框架

    在权限管理中,Struts2可以通过拦截器实现权限校验,确保只有具备相应权限的用户才能访问特定资源。 3. Hibernate框架:Hibernate是Java领域广泛使用的ORM工具,能将Java对象与数据库表进行映射,简化数据库操作。...

    struts2 实现oracle数据库的增删改查

    此外,Struts2还支持拦截器,可以实现事务管理、权限控制等功能,提高代码的可维护性和安全性。 页面展示方面,Struts2支持JSP、FreeMarker、Velocity等多种视图技术。通常,每个Action方法的结果都会映射到一个...

    struts2- 2.3.15.3 spring3.2.4 mybatis-3.2.3 通用分页(不同数据库) 拦截器

    拦截器在Struts2中扮演着重要角色,它们是AOP的一种实现,可以在Action执行前后插入额外的处理逻辑,如日志记录、权限验证、事务管理等。在分页场景下,拦截器可以用来处理分页参数,如当前页数和每页显示的条目数,...

    struts2和shiro完美整合解决方案

    4. **集成拦截器**:使用Struts2的拦截器机制,添加Shiro的`authc`拦截器,该拦截器会在每个Action执行前检查用户是否已登录。 5. **权限控制**:在Action或Action方法上添加注解,指定需要的权限,Shiro会根据这些...

    javaWeb学生公寓管理系统struts2

    1. **拦截器(Interceptor)机制**:Struts2的拦截器允许开发者插入自定义的处理逻辑,如日志、权限验证等,增强了代码的可复用性和模块化。 2. **OGNL(Object-Graph Navigation Language)表达式语言**:用于在...

    struts2实现用户登录注册

    拦截器则提供了一种在Action执行前后插入额外逻辑的方式,如日志记录、权限验证等;结果类型则定义了Action执行后如何展示结果,比如转发到某个JSP页面。 在用户注册部分,我们需要创建一个表单来收集用户信息,如...

    struts2+jdbc增删改查

    Struts2还引入了拦截器(Interceptor),这是一个强大的机制,可以实现如日志记录、事务管理、权限验证等功能。此外,Struts2支持多种结果类型,如dispatcher(转发)、redirect(重定向)等,方便控制请求的流向。 ...

    struts2与shiro集成(实例)

    Struts2采用了拦截器(Interceptor)机制,开发者可以通过自定义拦截器实现诸如日志记录、权限检查等预处理或后处理操作。此外,Struts2支持多种结果类型,如JSP、FreeMarker、Velocity等,方便视图的展示。 接下来...

    Struts+spring+hibernate 集成实现的经典权限管理系统源代码

    总的来说,这个“Struts+Spring+Hibernate 集成实现的经典权限管理系统”提供了一个完整的解决方案,展示了如何在Java Web应用中有效地管理权限,同时也为开发者提供了一个学习和实践整合这三大框架的实例。...

    Struts2-Crud+JdbcDemo最简单的Struts2+jdbc学习曾删改查程序

    3. **Interceptor(拦截器)**:拦截器是Struts2的一大特色,它允许我们在Action执行前后添加额外的功能,如日志、权限检查等。常见的拦截器有Params(处理请求参数)、Validation(表单验证)和Stack(默认拦截器栈...

Global site tag (gtag.js) - Google Analytics