`
tuyuan
  • 浏览: 31146 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2 Security 注解式权限处理

阅读更多

原有的根据地址访问控制权限.有些麻烦.所以写了个struts2 的 注解权限处理..

 

对于页面根据权限是否显示某个按钮.可以通过struts2 访问静态方法去实现.这里就不写了.

 

代码如下:

 

@Security:

 

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)   
public @interface Security {
	String name();
	String value();
}

利用struts2 的拦截器作为注解处理器:

 

先写个拦截器:

 

 

public class AuthorityInterceptor extends AbstractInterceptor{

	private static final long serialVersionUID = 6137804398980420490L;

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		
	              String actionMethod = invocation.getProxy().getMethod();
		Method method = invocation.getAction().getClass().getMethod(actionMethod);
		
		Security security = method.isAnnotationPresent(Security.class) == false ? null 
						: method.getAnnotation(Security.class);
		boolean sec = true;
		if(security != null){
			String name = security.name();
			String value = security.value();
			System.out.println("security-name==:"+name);
			System.out.println("security-value==:"+value);
			//这里根据name 和value  去查询数据库或者session,也可以是缓存里的用户权限信息..;
			sec = false;
		}
		return sec ? invocation.invoke() : "securityError";//如果没有权限,跳至权限提示页面,这个可以是全局跳转
	}

}
 

 

再配置一个拦截器栈:

 

<package name="seamsju" namespace="/user" extends="struts-default">
		 <interceptors> 
            <interceptor name="authorityInterceptor" class="com.yuhongtech.filter.AuthorityInterceptor"></interceptor> 
            <interceptor-stack name="myInterceptorStack"> 
                <interceptor-ref name="authorityInterceptor"></interceptor-ref> 
                <interceptor-ref name="defaultStack"></interceptor-ref> 
            </interceptor-stack> 
        </interceptors> 
        
         <action name="*html" class="com.yuhongtech.action.user.OrderAction" method="{1}">
         	<result>/user/orderlist.jsp</result>
         	<result name="input">/user2/login.jsp</result>
         	<interceptor-ref name="myInterceptorStack"></interceptor-ref> 
        </action>
    </package>

 

 好啦,东西处理完啦..可以用了:

 

 

              /**
	 * 订单查询
	 * @return
	 */
	@Security(name="Order",value="show")
	public String listorder(){}

 只要在对应的action 的method 上加上相应的@Security 注解就行了..

 

 

分享到:
评论
1 楼 kisbo110 2013-06-29  
这里有个问题啊,会不回导致 我所有的代码都要写一遍注解呢?

相关推荐

    spring3+struts2+hibernate3+spring security3 权限管理

    (1)该项目是基于spring3+struts2+hibernate3+spring security3的权限管理项目 (2)后台我已经实现了权限管理,包括用户,角色和资源的分配。前台实现了spring security3的管理 (3)网上案例普遍是后台单一登陆。...

    struts实现的权限分配

    2. **角色与权限关联**:在数据库中,通常会有角色表(Role)和权限表(Permission),角色与权限之间通过多对多的关系进行关联。例如,管理员角色可能拥有所有权限,而普通用户只有一部分权限。 3. **拦截器实现...

    权限控制(struts2+hibernate+spring+struts-menu+valuelist)

    Struts2处理请求和展示,Hibernate管理数据持久化,Spring提供整体架构支持并负责整合其他组件,struts-menu实现动态菜单,而valuelist则优化了数据检索和展示。这样的设计不仅提高了开发效率,也保证了系统的稳定性...

    权限管理 struts2 hiberante3.5 spring3.0 annotation

    在控制器层,使用Struts2的动作类和Spring Security的注解来判断用户是否具有执行某操作的权限。 总结起来,"Struts2+Hibernate3.5+Spring3.0(Annotation)"的组合为Java Web开发提供了一个强大的基础架构,尤其在...

    starting struts2 online.pdf

    - **安全性与权限控制**:理解Struts2的安全性机制,学习如何使用Shiro或Spring Security等框架进行权限控制和身份验证。 通过深入学习这些关键知识点,开发者不仅能够掌握Struts2的基本操作,还能够应对复杂的企业...

    Spring+struts2

    7. **拦截器(Interceptor)**:Struts2 的拦截器可以实现登录检查、权限控制等功能。 8. **过滤器(Filter)**:可能包括字符编码过滤器、Spring Security 过滤器等,用于处理请求和响应。 在实际开发中,还需要...

    Struts2拦截器及其用法详细说明

    在Struts2中,这些处理逻辑被封装在独立的类中,当请求到达Action之前,拦截器会按照预定义的顺序执行,执行完后再继续进行Action处理,最后返回结果。拦截器可以用于日志记录、权限验证、性能监控等多种场景。 **...

    struts1,hiberante权限管理系统

    Struts1、Hibernate和Spring是Java开发中常用的三个框架,它们组成的SSH(Struts+Spring+Hibernate)架构在企业级应用开发中非常流行,尤其在权限管理系统的构建中发挥着重要作用。下面将详细阐述这三个框架的功能、...

    在线音乐网站(Struts2+hibernate+spring)

    在这个在线音乐网站中,Spring还可能用于整合其他服务,如安全控制(Spring Security)或任务调度(Spring Batch),以实现用户认证、权限管理以及后台任务的自动化执行。 【SQL Server 2005】是数据库管理系统,...

    投票系统基于struts2

    3. **配置与注解**:Struts2支持XML配置和注解方式,允许开发者灵活地定义Action、结果类型、参数绑定等。这使得系统配置更加简洁明了,减少了配置文件的复杂度。 4. **OGNL(Object-Graph Navigation Language)**...

    Struts2,spring2.5与jpa的整合示例

    同时,Struts2的动作拦截器也可以配合Spring Security进行权限检查。 **整合过程** 整合这三个框架的过程一般包括以下步骤: 1. 配置Struts2,引入Spring插件,并配置Action类为Spring管理的bean。 2. 配置Spring...

    spring_security_struts.rar

    2. **Struts Action权限控制**: Spring Security可以通过注解或配置文件对Struts Action进行权限控制,只有拥有相应权限的用户才能访问特定的Action。 3. **登录和注销**: Spring Security提供了一系列内置的登录和...

    Struts 2中文手册

    此外,Struts 2支持注解配置,可以直接在Action类或方法上使用注解,简化配置工作。 Struts 2提供了丰富的拦截器,如Parameters拦截器用于处理HTTP请求参数,Validation拦截器进行表单验证,Exception拦截器处理...

    ssh2整合(spring+struts2+hibernate)-附

    Struts2通过配置文件(如`struts.xml`)来定义Action和Result的映射,以及拦截器链,拦截器可以进行权限检查、参数校验等预处理工作。 Hibernate作为ORM(Object-Relational Mapping)框架,提供了对象与数据库表...

    Struts2_Hibernate_Spring基础教程

    Struts2提供了丰富的拦截器机制,可以方便地实现日志记录、权限控制、异常处理等功能。此外,它还支持OGNL(Object-Graph Navigation Language)表达式语言,使得在视图和模型之间的数据传递更为便捷。 **Hibernate...

    论坛系统(Spring+Hibernate+Struts2)

    在论坛系统中,Spring管理所有Bean的生命周期,包括Struts2的Action、Service、DAO等,通过配置文件或注解实现依赖关系的自动装配。 4. **MVC模式**:Model-View-Controller模式是Web开发中的经典架构模式。在这个...

    SpringSecurity 2 权限基于数据库--完整DEMO(带数据库文件)

    在DEMO中,SpringSecurity与SSH的集成展示了如何在MVC架构下实现安全控制,例如在Struts2 Action上添加安全注解,限制只有特定角色的用户才能访问。 8. **松散耦合的设计**: - 优秀的DEMO应该具有良好的可扩展性...

    Struts2+Hibernate+Spring 整合示例

    Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts2处理MVC(Model-View-Controller)架构中的控制层,Hibernate专注于数据持久化,而Spring则提供了全面的依赖注入和...

    Struts权限管理

    7. **注解配置**:在Struts2中,除了XML配置外,还可以使用注解来简化配置,如在Action类或方法上添加@SkipValidation或@authorize注解来实现权限控制。 8. **安全性扩展**:除了基本的权限管理,还可以结合其他...

    struts2.zip

    3. **Interceptor**: 拦截器是Struts2中的重要特性,允许在Action执行前后插入自定义逻辑,如日志、权限检查等。 4. **配置管理**: Struts2支持XML和注解两种配置方式,用于定义Action、结果类型和拦截器栈。 **...

Global site tag (gtag.js) - Google Analytics