在 SSM下配置登陆拦截器 对比 在 SpringBoot配置登陆拦截器

如果本文对您有所帮助,可以点一下赞👍

本文只是学习笔记,欢迎指错,转载标明出处

 

1、在SSM配置拦截器

LoginInterceptor.java

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
        //获取请求的RUi:去除http:localhost:8080这部分剩下的
        System.out.println("获取请求的RUi:去除http:localhost:8080这部分剩下的");
        String uri = request.getRequestURI();
        //UTL:除了login.jsp是可以公开访问的,其他的URL都进行拦截控制
        if (uri.indexOf("login") >= 0) {
            System.out.println("登陆");
            return true;

        }
        if (uri.indexOf("reg") >= 0) {
            System.out.println("注册");
            return true;

        }
        if (uri.indexOf("getAllStoreInfo") >= 0) {
            System.out.println("商家");
            return true;

        }

        //获取session
        HttpSession session = request.getSession();
        BaseUser baseUser = (BaseUser) session.getAttribute("baseuser");
        System.out.println(baseUser);
        //判断session中是否有用户数据,如果有,则返回true,继续向下执行
        if (baseUser!=null) {
            System.out.println("已登陆");
            return true;
        }
        //不符合条件的给出提示信息,并转发到登录页面
        System.out.println("没登陆");
        request.setAttribute("msg", "您还没有登录,请先登录!");
        request.getRequestDispatcher("../login.jsp").forward(request, response);
        return false;
    }

}

在项目注册拦截器application-context.xml,并放行静态css和js等静态资源

<!-- 方法一:把所以静态文件放到一个static文件夹下,不会被拦截 -->
<mvc:resources location="/static/" mapping="/static/**"/>


<!-- 方法二:注册拦截器的时候,将js和css后缀的文件除外 
/**的意思是所有文件夹及里面的子文件夹/*是所有文件夹,不含子文件夹-->
<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/**/*.css"/>
            <mvc:exclude-mapping path="/**/*.js"/>
            <bean class="lingnan.interceptor.LoginInterceptor" />
        </mvc:interceptor>
</mvc:interceptors>

前端页面访问静态资源

<% pageContext.setAttribute("ctx", request.getContextPath()); %>
<script src="${ctx}/static/layui/layui.js"></script>

工程目录如下

2、在SpringBoot配置拦截器

LoginInterceptor.java
public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {

        String uri = request.getRequestURI();
        System.out.println(this.getClass().getName()+":::获取请求的RUi:去除http:localhost:8080这部分剩下的:::"+uri);
       /*
       这里可以设置对特定的页面放行,请求url中带有“toLogin”的不拦截,这是放行的一种方法
        
        if (uri.indexOf("toLogin") >= 0) {
            //System.out.println("登陆");
            return true;

        }
        
        */

        //获取sessiond的登陆信息loginBean
        HttpSession session = request.getSession();
        Admin loginBean = (Admin) session.getAttribute("loginBean");

        //判断session中是否有用户数据,如果有,则返回true,继续向下执行
        if (loginBean!=null) {
            return true;
        }
        //不符合条件的给出提示信息,并转发到登录页面
        request.setAttribute("msg", "您还没有登录,请先登录!");
        request.getRequestDispatcher("/admin/toLogin").forward(request, response);
        return false;
    }

}

在SpringBoot注册拦截器,和SSM不一样,这次是通过@Configuration注解来注册的

WebMvcConfig.java
@Configuration
public class  WebMvcConfig implements WebMvcConfigurer {

                @Override
                public void addInterceptors(InterceptorRegistry registry) {
                    registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(
                            "/admin/toLogin","/admin/login","/static/**");
                }
            }

application.yml(和application.xml作用一样的配置文件,我这里就不用xml了)

在springBoot中,static下的静态资源是默认映射到项目根目录的,这句话的意思是把static文件映射到它真实的存在地方去

spring:
  mvc:
    static-path-pattern: /static/**

没修改application.yml之前,访问静态资源方法如下

<link rel="stylesheet" th:href="@{/layui-v2.5.5/css/layui.css}" media="all">

修改application.yml之后,访问静态资源方法如下

<link rel="stylesheet" th:href="@{/static/layui-v2.5.5/css/layui.css}" media="all">

工程目录如下

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值