>  기사  >  Java  >  SpringBoot가 로그인 인터셉터를 구현하는 방법

SpringBoot가 로그인 인터셉터를 구현하는 방법

王林
王林앞으로
2023-05-17 08:04:28743검색

프로젝트 디렉터리에 inter와 contsfig라는 두 개의 패키지를 만듭니다.

SpringBoot가 로그인 인터셉터를 구현하는 방법

inter의 새 레이어에 HandlerInterceptor의 상속 클래스를 구현합니다.

SpringBoot가 로그인 인터셉터를 구현하는 방법

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

SpringBoot가 로그인 인터셉터를 구현하는 방법

구현에서 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 레이어

에서 로그인 로직을 구현하고 세션을 저장합니다

Httpsession 세션

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가 로그인 인터셉터를 구현하는 방법

로그인 성공

SpringBoot가 로그인 인터셉터를 구현하는 방법

다른 인터페이스에 액세스했습니다

위 내용은 SpringBoot가 로그인 인터셉터를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제