读书人

struts2 Security 引语式权限处理

发布时间: 2012-10-06 17:34:01 作者: rapoo

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;@Overridepublic 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" 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 注解就行了..

?

?

读书人网 >编程

热点推荐