zoukankan      html  css  js  c++  java
  • Spring MVC中的 权限拦截定义 以及 权限拦截的研发步骤

     

    权限拦截 (拦截器: 对请求进行区分)

    1 实现的价值(作用)
    用户未登录:访问没用登录的URL,拦截到以后 跳转回登录
    用户未登录:访问登录的URL,直接放行到后续流程处理框架,进行后续的操作
    用户登录: 访问拥有的权限 跳转页面并渲染
    用户登录: 访问没有的权限 跳转到没有权限的错误页面

     

    权限拦截的研发步骤

    1 实现HandlerInterceptor接口 有一个PreHandle方法
    获取Session中用户 在获取Request url
    判定Session 和null 的关系
    为空的情况没有登陆时 跳转到登陆页面
    在大配置中如果访问的是登陆url 不做拦截 使用的是Exclude 属性。
    不为空的情况 登陆后 分情况讨论放行
    访问 hasUrl:放行并渲染
    访问 hasNotURL : 拦截跳转到 NoPermission 页面

    2 用户登陆以后 访问 hasNotURL : 拦截跳转到 NoPermission 页面
    if(hasPrivilegeByurl(url入参)){
    retuen true;
    }

    3 UserInfo中
    Public boolean hasOrivilegeByUrl(url入参){
    // get all Permission from listener‘s area
    List<String>list =null; ---Conver End
    if(!list.contains(url)){
    return true;// 他不能拦截本身默认拥有的权限 ,这些权限并没有显示在DB中进行存储
    }
    //获取到CurrentLoginUserPrivilege集合
    迭代判定 有 :retuen true;
    }

    4 配置监听器 全局的监听器 SerbletContextListener
    在容器启动的时候 去给application 放入系统所有权限

    5 web.xml 中 配置监听器
    配置法则 :spring 的监听器一定配置在第一位。

  • 相关阅读:
    [Jobdu] 题目1528:最长回文子串
    [Jobdu] 题目1510:替换空格
    [Leetcode] Candy
    [Leetcode] Jump Game
    [Leetcode] Longest Valid Parentheses
    [Leetcode] Triangle
    [Leetcode] Populating Next Right Pointers in Each Node
    java web作用域page request session application
    String对象不可改变的特性及内存机制
    Java IO
  • 原文地址:https://www.cnblogs.com/SFHa/p/10275150.html
Copyright © 2011-2022 走看看