SpringBoot实现登录拦截器的方法详解

 更新时间:2022年07月05日 10:54:09   作者:kiang斯  
其实spring boot拦截器的配置方式和springMVC差不多,只有一些小的改变需要注意下就ok了。本文主要给大家介绍了关于如何在Springboot实现登陆拦截器功能,需要的朋友可以参考下

在项目目录下建立两个包:inter 与contsfig

在inter新建层中实现HandlerInterceptor的继承类

package com.example.gameboxadminserver.inter;

import com.example.gameboxadminserver.entity.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class MyInterceptor implements HandlerInterceptor {
	//在preHandle方法中进行登录判断
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        //session.setAttribute("adminName","o");

        String adminName = (String)session.getAttribute("adminName");//获取储存的session
       //System.out.println(adminName);
        if(adminName==null){
            System.out.println("请先登陆!");
            return false;
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //System.out.println("执行了TestInterceptor的postHandle方法");
    }


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

    }
}

在conrsfig中新增WebMvcConfiguer的继承类LoginConfig

实现addInterceptors方法

package com.example.gameboxadminserver.contsfig;


import com.example.gameboxadminserver.inter.MyInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class LoginConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册拦截器
        InterceptorRegistration registration = registry.addInterceptor(new MyInterceptor());
        registration.addPathPatterns("/**");                      //所有路径都被拦截
        registration.excludePathPatterns(
                //添加不拦截路径
                "/admin/adminLogin",
                
        );
    }
}

在serviceImpl层

实现登录逻辑并保存session

Httpsession session

session.setAttribute(“name”,value);

package com.example.gameboxadminserver.service.impl;

import com.example.gameboxadminserver.entity.Admin;
import com.example.gameboxadminserver.entity.Result;
import com.example.gameboxadminserver.entity.ResultUtil;
import com.example.gameboxadminserver.mapper.AdminMapper;
import com.example.gameboxadminserver.service.AdminService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author firstGroup
 * @since 2020-10-28
 */
@Service
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService {
    @Autowired
    AdminMapper adminMapper;
    @Override
    public Result adminLogin(HttpSession session,String adminName, String adminPwd) {
        Admin admin = adminMapper.adminLogin(adminName,adminPwd);
        if(admin!=null){
            session.setAttribute("adminName",adminName);
            return ResultUtil.success("登陆成功!");
        }
        return ResultUtil.error(2000,"登陆失败");
    }
}

这样就写完啦

功能测试

登陆失败

无法访问其他接口

登录成功

成功访问其他接口

到此这篇关于SpringBoot实现登录拦截器的方法详解的文章就介绍到这了,更多相关SpringBoot登录拦截器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • RabbitMQ下载与安装教程

    RabbitMQ下载与安装教程

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件),这篇文章给大家介绍RabbitMQ下载与安装教程,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • 生成8位随机不重复的数字编号的方法

    生成8位随机不重复的数字编号的方法

    生成随机不重复的数字编号在某些情况下也会用到,本文以生成8位随机不重复的数字编号为例与大家分享下具体的实现过程,感兴趣的朋友可以参考下
    2013-09-09
  • Spring Cloud多个微服务之间调用代码实例

    Spring Cloud多个微服务之间调用代码实例

    这篇文章主要介绍了Spring Cloud多个微服务之间调用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • mybatis中resulthandler的用法

    mybatis中resulthandler的用法

    这篇文章主要介绍了mybatis中resulthandler的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Dubbo扩展点SPI实践示例解析

    Dubbo扩展点SPI实践示例解析

    这篇文章主要为大家介绍了Dubbo扩展点SPI实践示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件的方法

    Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文

    这篇文章主要介绍了Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件的方法,需要的朋友可以参考下
    2015-12-12
  • MyBatis自动生成Where语句

    MyBatis自动生成Where语句

    这篇文章主要介绍了MyBatis自动生成Where语句的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • java开发微信分享到朋友圈功能

    java开发微信分享到朋友圈功能

    这篇文章主要为大家详细介绍了java开发微信发送给朋友和分享到朋友圈功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • SpringBoot 集成 Druid过程解析

    SpringBoot 集成 Druid过程解析

    这篇文章主要介绍了SpringBoot 集成 Druid过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Spring Cloud zuul自定义统一异常处理实现方法

    Spring Cloud zuul自定义统一异常处理实现方法

    这篇文章主要介绍了Spring Cloud zuul自定义统一异常处理实现,需要的朋友可以参考下
    2018-02-02

最新评论