Rumah  >  Artikel  >  Java  >  Bagaimana SpringBoot melaksanakan pemintas log masuk

Bagaimana SpringBoot melaksanakan pemintas log masuk

王林
王林ke hadapan
2023-05-17 08:04:28741semak imbas

Buat dua pakej dalam direktori projek: inter dan contsfig

Bagaimana SpringBoot melaksanakan pemintas log masuk

Laksanakan kelas warisan HandlerInterceptor dalam lapisan baharu inter

Bagaimana SpringBoot melaksanakan pemintas log masuk

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 {

    }
}

Tambahkan kelas yang diwarisi LoginConfig WebMvcConfiguer dalam conrsfig

Bagaimana SpringBoot melaksanakan pemintas log masuk

Laksanakan kaedah 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",
                
        );
    }
}

dalam lapisan perkhidmatan 🎜> Laksanakan logik log masuk dan simpan sesi

Sesi 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,"登陆失败");
    }
}

Ini dia!

Ujian fungsional

Log masuk gagal

Bagaimana SpringBoot melaksanakan pemintas log masukTidak dapat mengakses antara muka lain

Bagaimana SpringBoot melaksanakan pemintas log masukLog Masuk Berjaya

Bagaimana SpringBoot melaksanakan pemintas log masukAkses Berjaya ke antara muka lain

Atas ialah kandungan terperinci Bagaimana SpringBoot melaksanakan pemintas log masuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam