基于注解的Spring MVC权限控制方法
2015-04-22 17:21
316 查看
需求:要实现一个权限的验证,在web里面通常都是用url路径来控制权限。
demo:
步骤1、
首先在springmvc的配置文件里面配置
步骤2、
编写类:AuthPassport.java
编写类:AuthInterceptor.java
代码:demo下载
demo:
步骤1、
首先在springmvc的配置文件里面配置
<mvc:interceptors> <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 --> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> <!-- 如果不定义 mvc:mapping path 将拦截所有的URL请求 --> <bean class="com.ssh.util.AuthInterceptor"></bean> </mvc:interceptors>
步骤2、
编写类:AuthPassport.java
package com.ssh.util; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Documented @Inherited @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AuthPassport { boolean validate() default true; String fksz() default ""; String hbqq() default ""; String sh() default ""; String pz() default ""; }
编写类:AuthInterceptor.java
package com.ssh.util; import java.util.Iterator; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.ssh.dao.EmployeeDao; import com.ssh.entities.Employee; import com.ssh.entities.Privilege; import com.ssh.service.EmployeeService; public class AuthInterceptor extends HandlerInterceptorAdapter { @Autowired private EmployeeService employeeService; @Autowired private EmployeeDao employeeDao; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (handler.getClass().isAssignableFrom(HandlerMethod.class)) { AuthPassport authPassport = ((HandlerMethod) handler).getMethodAnnotation(AuthPassport.class); // 没有声明需要权限,或者声明不验证权限 if (authPassport == null || authPassport.validate() == false) { System.out.println("没有声明需要权限"); System.out.println(request.getRequestURL().toString()); System.out.println("==============================="); return true; } else { System.out.println("声明需要权限"); System.out.println(request.getRequestURL().toString()); String urlpath[] = request.getRequestURL().toString().split("/remit2/"); System.out.println(urlpath[1]); Employee employee = (Employee) request.getSession().getAttribute("emp"); System.out.println(employee); Employee employee2 = employeeService.getEmployeeByName(employee.getName()); System.out.println(employee2); Set<Privilege> priSets = employee2.getPrivileges(); Iterator<Privilege> it = priSets.iterator(); while (it.hasNext()) { Privilege o = it.next(); System.out.println(o.getName()); if (o.getName().equals(authPassport.fksz())){ System.out.println("风控设置"); return true; }else if (o.getName().equals(authPassport.hbqq())){ System.out.println("划拨请求"); return true; }else if (o.getName().equals(authPassport.sh())){ System.out.println("审核"); return true; }else if (o.getName().equals(authPassport.pz())){ System.out.println("批准"); return true; } } response.sendRedirect("test"); return false; // System.out.println("==============================="); // // 在这里实现自己的权限验证逻辑 // if (false) { // // 如果验证成功返回true(这里直接写false来模拟验证失败的处理) // return true; // } else {// 如果验证失败 // // 返回到登录界面 // response.sendRedirect("test"); // return false; // } } } else { return true; } } }
代码:demo下载
相关文章推荐
- 一种基于注解的Spring MVC权限控制方法
- 一种基于注解的Spring MVC权限控制方法
- 反射和注解的妙用——struts2基于方法的权限控制
- struts2 使用注解、反射、拦截器实现基于方法的权限控制
- 反射和注解的妙用——struts2基于方法的权限控制
- 在struts2.3.4.1中使用注解、反射、拦截器实现基于方法的权限控制
- JAVAWEB开发之Servlet3.0新特性的使用以及注解的详细使用和自定义注解的方法、动态代理的使用、利用动态代理实现细粒度的权限控制以及类加载和泛型反射
- springMVC基于注解的权限控制
- (来源不详 转载+整理)基于角色的访问控制方法(RBAC) 权限系统设计
- spring mvc使用自定义注解控制访问权限
- Shiro入门之二 --------基于注解方式的权限控制与Ehcache缓存
- Spring Security(17)——基于方法的权限控制
- 基于注解和拦截器的权限控制
- Spring Security(17)——基于方法的权限控制
- ASP.NET MVC 中实现基于角色的权限控制的处理方法
- Spring Security(17)——基于方法的权限控制
- ——基于方法的权限控制
- 一种基于annotation的Spring-mvc权限控制方法
- Spring Security(17)——基于方法的权限控制
- 基于struts2拦截器的权限控制系统1——后台方法的拦截