spring boot 登录拦截

  作者:记性不好的阁主

要实现登录拦截须实现HandlerInterceptor接口


1、编写登录拦截器


在Component路径下创建拦截器




package com.laoxu.springboot.component;

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 {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object loginUser = request.getSession().getAttribute("LoginUser");
if(null != loginUser){
return true;
}else {
request.setAttribute("msg","没有权限请登录");
request.getRequestDispatcher("/login").forward(request,response);
return false;
}

}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

}

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

}
}


2、注册登录拦截器使之生效





package com.laoxu.springboot.controller;

import com.laoxu.springboot.component.LoginHandlerInterceptor;
import com.laoxu.springboot.component.MyLocaleResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
* 配置静态资源映射
*
* @author sunziwen
* @version 1.0
* @date 2018-11-16 14:57
**/
@Component
public class WebConfig implements WebMvcConfigurer {
/**
* 添加静态资源文件,外部可以直接访问地址
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {

}

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**") //拦截所有url
.excludePathPatterns("/","/index.html","/login","/login.html","/user/login","/asserts/**","/webjars/**"); //排除指定的url(不拦截的url)
}



}


3、登录控制器


package com.laoxu.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpSession;
import java.util.Map;

@Controller
public class LoginController {

@PostMapping("/user/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
Map<String,Object> map,
HttpSession session){
if(!StringUtils.isEmpty(username) && "12345".equals(password)){
session.setAttribute("LoginUser",username);
return "redirect:/main.html";
}else {
map.put("msg","用户名密码错误");
return "login";
}

}
}



相关推荐

评论 抢沙发

表情

分类选择