> Java > java지도 시간 > SpringBoot가 로그인 인터셉터를 구현하는 방법

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

王林
풀어 주다: 2023-05-17 08:04:28
앞으로
771명이 탐색했습니다.

프로젝트 디렉터리에 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿