spring aop 的权限的管理是通过对路径的控制来实现的
现在共有两个角色,经理和员工
经理的权限检查的代码
MgrAuthorityInterceptor.java
public class MgrAuthorityInterceptor implements MethodInterceptor
{
public Object invoke(MethodInvocation invocation) throws Throwable
{
HttpServletRequest request = null;
ActionMapping mapping = null;
Object[] args = invocation.getArguments();
//解析目标方法的参数
for (int i = 0 ; i < args.length ; i++ )
{
if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];
if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];
}
//从session中得到用户的级别
String level = (String)request.getSession().getAttribute("level");
//如是经理级别则继续,否则,回到登陆页面
if ( level != null && level.equals("mgr") )
{
return invocation.proceed();
}
else
{
return mapping.findForward("login");
}
}
}
员工的权限的实现,EmpAuthorityInterceptor.java
public class EmpAuthorityInterceptor implements MethodInterceptor
{
public Object invoke(MethodInvocation invocation) throws Throwable
{
HttpServletRequest request = null;
ActionMapping mapping = null;
Object[] args = invocation.getArguments();
for (int i = 0 ; i < args.length ; i++ )
{
if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];
if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];
}
//从session中得到用户的级别
String level = (String)request.getSession().getAttribute("level");
//如是经理或员工级别则继续,否则,回到登陆页面
if ( level != null && (level.equals("emp") || level.equals("mgr")))
{
return invocation.proceed();
}
else
{
return mapping.findForward("login");
}
}
}
员工,经理权限的实现,在action-servlet.xml中
<!-- 以经理权限拦截器生成代理 -->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
action中的经理的操作
</list>
</property>
<property name="interceptorNames">
<list>
<value>mgrAuthorityInterceptor</value>
</list>
</property>
</bean>
<!-- 以普通员工权限拦截器生成代理 -->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
员工中的action操作
</list>
</property>
<property name="interceptorNames">
<list>
<value>empAuthorityInterceptor</value>
</list>
</property>
</bean>
<!-- 定义经理权限检查拦截器,class即前面的MgrAuthorityInterceptor.java-->
<bean id="mgrAuthorityInterceptor" class="org.***.MgrAuthorityInterceptor"/>
<!-- 定义普通员工权限检查拦截器 ,class即前面的EmpAuthorityInterceptor.java-->
<bean id="empAuthorityInterceptor" class="org.***.EmpAuthorityInterceptor"/>
分享到:
相关推荐
在本示例中,我们将深入探讨如何利用Spring AOP实现简单的权限验证。 首先,AOP的核心概念是切面(Aspect),它封装了横切关注点,比如日志、事务管理、权限验证等。在Spring AOP中,切面通过通知(Advice)来定义...
在Spring框架中,AOP(Aspect Oriented Programming,面向切面编程)是一种强大的设计模式,它允许程序员在不修改源代码的情况下,通过插入被称为“切面”的代码来增强功能或处理横切关注点,如日志、事务管理、权限...
在Spring中,AOP主要用于实现日志记录、事务管理、权限控制等功能。 在描述中提到的问题,用户在尝试使用Spring AOP的注解`@Aspect`时遇到了没有提示的情况。这通常是因为缺少了相关的jar包依赖。Spring AOP的实现...
- 安全控制:验证用户权限,限制访问。 - 错误处理:捕获并处理运行时异常。 综上所述,Spring 2.5 AOP例子展示了如何利用类扫描和XML配置实现面向切面编程。通过理解这些概念和实践,我们可以更高效地管理和维护...
在Java应用中,AOP主要用于处理那些具有横切关注点(如日志记录、事务管理、权限检查等)的代码,使得业务逻辑代码能够更加专注于核心功能,而无需关心这些横切关注点的实现。 在Spring AOP中,我们通常需要依赖两...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、权限控制等,并将它们模块化为可重用的切面。为了在Spring中进行AOP编程,我们需要一些特定的JAR包。以下是...
9. **Spring AOP的应用场景**:日志记录、性能监控、事务管理、权限控制等。 在实际开发中,使用Spring AOP的步骤包括: 1. 创建切面类,并定义通知方法。 2. 使用`@Aspect`注解标记切面类。 3. 定义切入点表达式,...
Spring Boot 通过 AOP 和自定义注解实现权限控制的方法 在本文中,我们将探讨如何使用 Spring Boot 通过 Aspect-Oriented Programming(AOP)和自定义注解来实现权限控制。权限控制是任何应用程序的重要组件,它...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、权限控制等,并将它们模块化为可重用的切面。本教程将详细讲解如何使用注解方式在Spring中实现AOP。 首先,...
Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它提供了在应用程序中实现切面编程的能力。AOP允许开发者定义“方面”,这些方面可以包含业务逻辑的各个部分,比如日志...
本压缩包"Spring_aop额外所需增强包.zip"包含了实现Spring AOP功能所必需的三个关键库:aopalliance.jar、aspectjrt.jar和aspectjweaver.jar。 1. aopalliance.jar:这是一个通用的AOP接口库,定义了一些基本的AOP...
- **面向切面编程**:在Spring中,AOP主要用于日志记录、事务管理、权限检查等横切关注点。AspectJ库让AOP实现更加灵活和强大。 - **事务管理**:Spring提供了声明式和编程式的事务管理,简化了事务控制,确保业务...
总结起来,Spring Boot结合Spring AOP实现拦截器,主要是通过定义切面类,声明拦截规则(切点),然后编写环绕通知,以在方法执行前后插入自定义的行为,如记录日志、检查权限等。这种做法可以有效地解耦业务逻辑和...
此外,Spring还提供了AOP(面向切面编程)功能,可以方便地实现权限拦截和日志记录等跨切面的逻辑。 再者,Hibernate作为ORM(对象关系映射)框架,处理了数据库操作。它将Java对象与数据库表对应,使得开发者可以...
在Spring 2.5版本中,面向切面编程(AOP)是一个强大的功能,它允许开发者定义“切面”来封装横切关注点,如日志、事务管理、权限检查等,使得代码更加模块化和可重用。AspectJ是一个成熟的AOP框架,Spring在其AOP...
通过Spring与Shiro的整合,我们可以实现精细化的权限控制,为企业的基础架构提供坚实的支持。 首先,我们需要理解Spring与Shiro的核心概念。Spring框架的核心是依赖注入(Dependency Injection, DI)和面向切面编程...
在Java开发中,AOP(面向切面编程)是一种强大的设计模式,用于处理系统中的横切关注点,如日志、事务管理、权限控制等。当我们想要在AOP中获取HttpServletRequest对象时,这通常是为了实现与请求相关的业务逻辑或者...
粗粒度控制通过过滤器对访问路径进行权限限制,而细粒度控制则通过重写Spring的DelegatingRequestProcessor类,实现对每个方法的精确权限控制。对于无法直接拦截的类,可以利用CGLIB实现AOP,但这种方式仅适用于继承...
在这个项目中,Spring将负责管理对象的生命周期和依赖关系,同时也可以通过Spring的安全模块实现权限控制。 2. **Struts2框架**:Struts2是基于MVC设计模式的Java Web框架,用于处理HTTP请求和响应。在用户权限认证...