当前位置: 首页 > news >正文

和田网站制作西宁服务

和田网站制作,西宁服务,自建wordpress主题,梧州高端网站建设服务场景描述#xff1a;现在需要对部分Controller或者Controller里面的服务方法进行权限拦截。如果存在我们自定义的注解#xff0c;通过自定义注解提取所需的权限值#xff0c;然后对比session中的权限判断当前用户是否具有对该控制器或控制器方法的访问权限。如果没有相关权限… 场景描述现在需要对部分Controller或者Controller里面的服务方法进行权限拦截。如果存在我们自定义的注解通过自定义注解提取所需的权限值然后对比session中的权限判断当前用户是否具有对该控制器或控制器方法的访问权限。如果没有相关权限则终止控制器方法执行直接返回。有两种方式对这种情况进行处理。 方式一使用SpringAOP中的环绕Around 方式二使用Spring web拦截器 标签 Spring 代码片段(4)[全屏查看所有代码] 1. [代码]定义注解      ? 1 2 3 4 5 6 7 8 9 10 11 12 Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD,ElementType.TYPE}) Documented //最高优先级 Order(Ordered.HIGHEST_PRECEDENCE) public interface RoleControl {     /**      *      * 角色类型以便决定是否具有相关权限      */     String value() default user; } 2. [代码]在Controller中使用      ? 1 2 3 4 5 6 7 8 9 10 11 12 RoleControl(ADMIN) Controller public class LoginController {     Autowired     private UserService uService;     Autowired     private GlobalConfigService gcService;     RoleControl()     RequestMapping(/login)     public String login(HttpServletRequest request,HttpServletResponse resp, ModelAttribute(user) UserDto uDto) {            return } 3. [代码]方式一使用SpringAOP中的环绕Around      ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 Component Aspect public class RoleControlAspect {     /**类上注解情形 */ //  Pointcut(within(net.xby1993.springmvc.annotation.RoleControl))     Pointcut(execution(* net.xby1993.springmvc.controller..*.*(..)) within(net.xby1993.springmvc.annotation.RoleControl))     public void aspect(){               }     /**方法上注解情形 */     Pointcut(execution(* net.xby1993.springmvc.controller..*.*(..)) annotation(net.xby1993.springmvc.annotation.RoleControl))     public void aspect2(){               }     /**aop实际拦截两种情形*/     Around(aspect() || aspect2())     public Object doBefore(ProceedingJoinPoint point) {                     HttpServletRequest request ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();         HttpSession sessionrequest.getSession();         Object target point.getTarget();         String method point.getSignature().getName();         Class? classz target.getClass();         Method m ((MethodSignature) point.getSignature()).getMethod();         try {             if (classz!null m ! null ) {                 boolean isClzAnnotation classz.isAnnotationPresent(RoleControl.class);                 boolean isMethondAnnotationm.isAnnotationPresent(RoleControl.class);                 RoleControl rcnull;                 //如果方法和类声明中同时存在这个注解那么方法中的会覆盖类中的设定。                 if(isMethondAnnotation){                     rcm.getAnnotation(RoleControl.class);                 }else if(isClzAnnotation){                     rcclassz.getAnnotation(RoleControl.class);                 }                 String valuerc.value();                 Object objsession.getAttribute(GeneUtil.SESSION_USERTYPE_KEY);                 String curUserTypeobjnull?:obj.toString();                 //进行角色访问的权限控制只有当前用户是需要的角色才予以访问。                 boolean isEqualsStringUtils.checkEquals(value, curUserType);                 if(isEquals){                     try {                         return point.proceed();                     } catch (Throwable e) {                         // TODO Auto-generated catch block                         e.printStackTrace();                     }                 }                               }         }catch(Exception e){                       }         return null;     } } 4. [代码]方式二使用拦截器推荐     跳至 [1] [2] [3] [4] [全屏预览] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import net.xby1993.springmvc.annotation.RoleControl; import net.xby1993.springmvc.util.GeneUtil; import net.xby1993.springmvc.util.PathUtil; import net.xby1993.springmvc.util.StringUtils; public class GlobalInterceptor extends HandlerInterceptorAdapter{     private static Logger logLoggerFactory.getLogger(LoginInterceptor.class);     Override     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)             throws Exception {         HttpSession srequest.getSession();         s.setAttribute(host, PathUtil.getHost());         s.setAttribute(siteName, GeneUtil.SITE_NAME);         //角色权限控制访问         return roleControl(request,response,handler);     }     /**角色权限控制访问*/     private boolean roleControl(HttpServletRequest request,HttpServletResponse response, Object handler){         HttpSession sessionrequest.getSession();         System.out.println(handler.getClass().getName());         if(handler instanceof HandlerMethod){             HandlerMethod hm(HandlerMethod)handler;             Object targethm.getBean();             Class? clazzhm.getBeanType();             Method mhm.getMethod();             try {                 if (clazz!null m ! null ) {                     boolean isClzAnnotation clazz.isAnnotationPresent(RoleControl.class);                     boolean isMethondAnnotationm.isAnnotationPresent(RoleControl.class);                     RoleControl rcnull;                     //如果方法和类声明中同时存在这个注解那么方法中的会覆盖类中的设定。                     if(isMethondAnnotation){                         rcm.getAnnotation(RoleControl.class);                     }else if(isClzAnnotation){                         rcclazz.getAnnotation(RoleControl.class);                     }                     String valuerc.value();                     Object objsession.getAttribute(GeneUtil.SESSION_USERTYPE_KEY);                     String curUserTypeobjnull?:obj.toString();                     //进行角色访问的权限控制只有当前用户是需要的角色才予以访问。                     boolean isEqualsStringUtils.checkEquals(value, curUserType);                     if(!isEquals){                         //401未授权访问                         response.setStatus(401);                         return false;                     }                 }             }catch(Exception e){                               }         }                   return true;     }
http://www.sadfv.cn/news/134995/

相关文章:

  • 如何做国外的电商网站设计oss cdn wordpress
  • 如何设计大气的网站主题网站设计实验步骤
  • asp.net网站创建浏览器快捷图标破解wordpress登录密码
  • 建设网站对比方案拉销智能模板建站系统
  • 网站最佳颜色搭配长春建设招标网
  • 股权众筹网站建设太原网站seo外包
  • 做网站的有哪些学校北京知名网站建设公司排名
  • 找人建设一个网站多少钱ec网站域名
  • 网站建设的经济可行性分析安装完wordpress主题
  • 做的比较好的法律实务培训网站网站首页模块建设
  • 忘记网站后台密码泉州网站建设泉州
  • 手机wap网站开发教程站长工具推荐seo综合查询
  • 自助建站网信息发布平台怎么在58上做公司网站
  • 网站官网建设做个人网站要多少钱
  • 苏宁易购网站建设的目标wordpress做登录
  • 网站建设图书室内设计公司排名2023
  • 在服务器上部署网站网站过期后
  • 公司网站开通整形网站建设方案策划书
  • 网站架构怎么看网上哪个购物平台最值得信赖
  • 招标网站的服务费怎么做分录在哪个网站可做网络夫妻
  • 商城网站建设net2006新站整站排名优化火速公司
  • 廊坊手机网站邦邻网站建设
  • google 网站收录程序源代码下载网站
  • 台州市环保局网站开发区爱情动做网站推荐
  • 公司网站怎样维护运营哪家网站
  • 动态域名解析 免费成都百度推广优化
  • 高新区规划建设局网站wordpress集成插件下载
  • sqlite做网站怎么用个人电脑做网站
  • 青岛网站建设q.479185700強快速网站优化技巧
  • 十堰网站优化价格最低价网站建设