IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 使用mvc进行权限控制 -> 正文阅读

[开发测试]使用mvc进行权限控制

拦截器

将用户请求同意拦截在拦截器中,在拦截器中定义规则,如果该请求不满足过滤规则,则返回首页,满足这放行。

在Spring MVC中拦截请求是通过处理器拦截器HandlerInterceptor来实现的,它拦截的目标是请求的地址。在Spring MVC中定义一个拦截器,需要实现HandlerInterceptor接口。

?

HandlerInterceptor

源码解析:

1.preHandle()方法

该方法将在请求处理之前被调用

2.postHandle()方法

该方法将在当前请求进行处理之后,在modelandiview对象返回之后被调用的

3.afterCompletion()方法

该方法将在整个当前请求结束之后

定义规则

使用preHandle()方法在请求之前调用

    /**
     *检测全局session对象中是否有uid数据,如果有则方行,如果没有重定向到登录页面
     * @param request       请求对象
     * @param response      响应对象
     * @param handler       处理器(url+Conroller:映射)
     * @return     如果返回值为true表示放行当前的请求,如果返回值为flase则拦截当前请求
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       //HttpServletRequest对象来获取session对象
        Object obj = request.getSession().getAttribute("uid");
        if (obj ==null){
            //说明没有登录过系统,则重定向到login.html页面
            response.sendRedirect("/web/login.html");
            //结束后续的调用
            return false;
        }
//请求放行
        return false;
    }

过滤器

添加白名单:那些资源在不登陆的情况下使用

添加黑名单:在用户注册状态下才可以访问的页面资源

需要借助WebMvcConfigure接口,对请求信息进行过滤

//将自定义拦截器进行注册
default void addInterceptors(InterceptorRegistry registry) {

}
@Configuration//加载当前的拦截器并进行注册
public class LoginInterceptorConfigurer implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //    创建自定义拦截器
        LoginInterceptor interceptor = new LoginInterceptor();
//配置白名单:存放一个list集合  白名单
        List<String> patterns =new ArrayList<>();
        patterns.add("/bootstrap3/**");
        patterns.add("/css/**");
        patterns.add("/images/**");
        patterns.add("/js/**");
        patterns.add("/web/register.html");
        patterns.add("/web/login.html");
        patterns.add("/web/index.html");
        patterns.add("/web/product.html");
        patterns.add("/users/reg");
        patterns.add("/users/login");


        //拦截器的注册
        registry.addInterceptor(interceptor)
                .addPathPatterns("/**").excludePathPatterns(patterns);//表示要拦截的url是什么


    }
}

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:24:47  更:2021-08-26 12:26:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/14 2:55:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码