首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Springboot登录拦截器

Springboot登录拦截器

作者头像
用户1289394
发布2021-01-07 10:03:44
发布2021-01-07 10:03:44
1.2K0
举报
文章被收录于专栏:Java学习网Java学习网

Springboot登录拦截器 和 swagger框架接口自动生成html文档

使用开发工具:IDEA

实现步骤如下

1.需导入的依赖如下:

代码语言:javascript
复制
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--swagger api 依赖 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

2.登录拦截器类

代码语言:javascript
复制
package com.ckf.springbootinterceptor.config;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
/**
 * 登录拦截器
 */
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 用于存储排除拦截的url  (登录/login.html, /css,/js,/img)
     */
    private List<String> urls = new ArrayList<String>();
    /**
     * 进入控制器之前拦截
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if (session.getAttribute("admin") != null) {
            //已登录,放行。。
            return true;
        } else {
            System.out.println("你还没登录,没有权限");
           /* response.sendRedirect("/no_login");*/
      /*  session.setAttribute("no_login",session);
            request.setAttribute("msg", "没有权限,先登录");*/
            //未登录,拦截 返回login
            response.sendRedirect("/login");    //未登录,拦截跳转到登录页
            return false;
        }
    }
    /*设置能通过的url*/
    public List<String> getUrls() {
        urls.add("/login");   //login url请求
        urls.add("/doLogin");  //登录请求
        urls.add("/no_login");
        urls.add("/swagger-ui.html");
        //静态资源
        urls.add("/img/*");
        urls.add("/js/*");
        urls.add("/css/*");
        return urls;
    }
}
 3.注册拦截器配置类
package com.ckf.springbootinterceptor.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * 注册拦截器配置类
 */
@Configuration
public class WebappAdrapter implements WebMvcConfigurer {
    /**
     * 将登录拦截器添加进来
     * addPathPatterns()添加拦截
     * excludePathPatterns()排除拦截
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //实例化登录拦截器,用于注册
        LoginInterceptor loginInterceptor = new LoginInterceptor();
        /***
         * 所有路径都被拦截  addPathPatterns("/**")
         * 允许通过   excludePathPatterns("/login", "/register")
         */
        registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/swagger-resources/**").excludePathPatterns(loginInterceptor.getUrls());
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.需导入的依赖如下:
  • 2.登录拦截器类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档