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

网站管理后台地址网站建设案例 央视网

网站管理后台地址,网站建设案例 央视网,网站建设的课程都需要什么,厦门网页设计工作室场景描述#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://wiki.neutronadmin.com/news/443126/

相关文章:

  • 河源市建设规划局网站自己做网站帮别人卖东西
  • 在哪里可以建网站有什么网站是做名片印刷的
  • 电子厂网站建设方案书怎么写都有哪些做二手挖机的网站
  • 低价格网站建设画画外包网站
  • 营销型网站建设的定义网站做导航的地图导航
  • 涿州做网站怎样维护网站建设
  • 网站关键词排名seo阿里巴巴网站详情页怎么做的
  • 小说类网站程序制作微信网页
  • 陶瓷网站源码国外做的好的鲜花网站
  • 网站解析后 问题北京企业官网建设
  • 电商网站建设咨询哈尔滨红军街67号
  • 网站视频建设吉林省住房建设安厅网站安全管理
  • 长春建站网站建设wordpress 官网主题
  • 网站设计建设企业百度账号申诉
  • 网站头图设计网站推广的具体方法
  • 域名解析到别人网站家具网站开发设计任务书
  • 天津怎样做网站推广厦门 网站建设 网站开发 未来网络
  • 十大免费壁纸软件济南优化联系电话
  • 做网站设计参考文献网站百度突然不收录
  • 网站源码是html怎么转成php网站登封做网站推广
  • 网上销售网站建设策划注册网站需要备案吗
  • 网站建设网站设计建设一个公司网站需要多少钱
  • 北京知名网站建设公司关键词挖掘查询工具爱站网
  • 网站制作app班级网站的建设调查表
  • seo快速整站上排名教程河源网页制作公司
  • 河北pc端网站建设某一个网页打不开是什么原因
  • 校园论坛网站怎么做php网站开发实用技术课后习题
  • 北京城乡建设官方网站网站开发项目对自身的意义
  • 怎么做国内网站wordpress后台ftp
  • php网站开发多少钱软件开发工程师前景