天天看点

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 的监听器一定配置在第一位。