SpringBoot配置登录拦截器

一、登录时将用户信息设置进session

 /**
     * 登录
     * @param admin
     * @return
     */
    @RequestMapping("login")
    public R login(Admin admin, HttpSession session){
        Admin admin1 = adminServiceImpl.login(admin);  //验证账号密码,返回用户对象admin1
        if (admin1 == null){
            return R.error();
        }else {
            //设置姓名和id到session
            session.setAttribute("admin",admin1.getUsername());
            session.setAttribute("adminId",admin1.getId());
            return R.ok();
        }
    }

二、实现HandlerInterceptor拦截器

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

public class LoginHandlerInterceptor implements HandlerInterceptor {
    /**
     * 请求之前被调用
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object adminId = request.getSession().getAttribute("adminId");
        if (adminId == null) {       //无之前设置的adminId,重定向会登录界面
            request.setAttribute("msg", "无权限请先登录");
            response.sendRedirect("/login.html");   
            return false;
        } else {
            return true;
        }
    }

    /**
     * 请求执行完成后,生成视图之前执行
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    /**
     * 请求后被调用
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

三、实现WebMvcConfigurer接口

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 MyMvcConfig implements WebMvcConfigurer {
    // 将登录拦截器配置到容器中
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor())
                //设置拦截器的过滤路径规则,"/**"拦截全部
                .addPathPatterns("/**")
                //设置不拦截规则
                .excludePathPatterns("/","/admin/login", "/login.html", "/css/**", "/js/**", "/images/**","/fonts/**","/lib/**");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值