springboot开发 登录&拦截器

1.LoginController

@Controller
public class LoginController {


	    @PostMapping(value = "/user/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        Map<String,Object> map, HttpSession session){


        if(!StringUtils.isEmpty(username)&&password.equals("123456")){
        	//将用户信息存到session中,用于判断用户是否登录
            session.setAttribute("loginUser",username);
            //登录成功,防止表单重复提交,重定向到main.html
            return "redirect:/main.html";
        }

        //登录失败
        map.put("msg","用户名密码错误");
        return "login";
    }
}

2.application.properties

//设置项目路径
server.servlet.context-path=/crud

3.LoginHandlerInterceptor

	/**
	 * 登录检查:没有登录的用户不能访问main.html
	 */
	
	public class LoginHandlerInterceptor implements HandlerInterceptor {
	
	    @Override
	    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
	    
			//从session中取用户信息,判断是否登录
	        Object user = request.getSession().getAttribute("loginUser");
	        if(user == null){
	            //未登录,拦截到登入页面
	            request.setAttribute("msg","没有权限,请先登录");
	            request.getRequestDispatcher("/index.html").forward(request,response);
	            return false;
	
	        }else{
	            //已登录,放行
	            return true;
	        }
	
	    }
	
	    @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 {
	
	    }
	}

4.前端错误信息提示

//如果信息不为空,那么就显示错误提示
在这里插入图片描述
5.登录后跳转前端显示用户信息

[[${session.loginUser}]]

6.注册拦截器

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    @Bean
   public WebMvcConfigurer webMvcConfigurer(){

       WebMvcConfigurer webMvcConfigurer = new WebMvcConfigurer() {
           //添加路径映射
           @Override
           public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("login");
                registry.addViewController("/index.html").setViewName("login");
                registry.addViewController("/main.html").setViewName("dashboard");
           }

           //注册拦截器
           @Override
           public void addInterceptors(InterceptorRegistry registry) {
               registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
                       .addPathPatterns().excludePathPatterns("/index.html","/","/user/login");
           }

           /**
            * 配置静态访问资源
            * @param registry
            */
           @Override
           public void addResourceHandlers(ResourceHandlerRegistry registry) {
               registry.addResourceHandler("/static/asserts/**").addResourceLocations("classpath:/static/asserts/");
           }
       };


       return webMvcConfigurer;
   }


}

猜你喜欢

转载自blog.csdn.net/weixin_42465206/article/details/89089945