Spring Boot入门(十七) 之 登录拦截器

前边我们写完了登陆的页面,有一个问题就是,如果我不登录,我直接在浏览器输入登陆后的网址,照样可以进去,那么登录就失去了意义
Google浏览器登录好的页面,直接复制到火狐直接打开在这里插入图片描述
于是我们需要设定一个拦截器,如果你没登录,那么你复制这个链接,就会返回到登录页面
我们在component里边新建一个LoginHandlerInterceptor.java,
在这里插入图片描述
然后我们让这个类implements HandlerInterceptor
他有三个方法可以使用,我们按住Ctrl+o 就可以调出来如下所示:
在这里插入图片描述
代码如下:

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }

首先我们在controller里边加入一个session对象,并把username传入到session里边
在这里插入图片描述
然后我们在LoginHandlerInterceptor里边写入判断
在这里插入图片描述

@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("loginUser");
        if(user == null) {
            //未登录,返回登录界面
            request.setAttribute("msg", "没有权限,请登录");
            request.getRequestDispatcher("/index.html").forward(request, response);
        } else {
            //登陆成功
            return true;
        }
        return false;
    }

然后我们去配置类里边注册拦截器
我们在Config文件里边按Ctrl+o调出所有的方法,其中addInterceptors就是用来注册拦截器的
在这里插入图片描述
里边内容如下
在这里插入图片描述
添加拦截路径"/**"表示所有路径,后边的excludePathPatterns则是排除那些不用拦截的页面,登录页面我们就不用拦截了
尤其注意后边的"/user/login"路径也不能拦截,否则别人就没法登录了
你以为这样就完了吗?不!
在springboot1.x中,静态资源比如css js的话,拦截器是不会拦截的,但是2.x中居然会拦截,于是我们还需要给css和js放行,我们在放行的里边添加这两个即可"/asserts/**", "/webjars/**"
在这里插入图片描述

 @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/", "/index", "/index.html", "/user/login", "/asserts/**","/webjars/**");
    }

然后我们再次访问main.html就会转到登录页面如下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值