• SpringBoot 之 实现登录功能及登录拦截器


    增加登录退出控制器:

    # src/main/java/com/wu/controller/LoginController.java
    
    @Controller
    public class LoginController {
        @RequestMapping("/user/login")
        public String login(
            @RequestParam("username") String username,
            @RequestParam("password") String password,
            Model model,
            HttpSession session) {
            if (!StringUtils.isEmpty(username) && "123456".equals(password)) {
                session.setAttribute("loginUser", username);
                return "redirect:/main.html";
            } else {
                model.addAttribute("msg", "用户名或密码错误!");
                return "index";
            }
        }
    
        @RequestMapping("/user/logout")
        public String logout(HttpSession session) {
            session.invalidate();
            return "redirect:/index.html";
        }
    }
    

    增加登录拦截器:

    # src/main/java/com/wu/interceptor/LoginHandlerInterceptor .java
    
    public class LoginHandlerInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            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 {
    
        }
    }
    

    将登录拦截器配置到容器中:

    # src/main/java/com/wu/config/MyMvcConfig.java
    
    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer {
        // 将登录拦截器配置到容器中
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new LoginHandlerInterceptor())
                    .addPathPatterns("/**")
                    .excludePathPatterns("/", "/index.html", "/user/login", "/css/**", "/js/**", "/img/**");
        }
    
        // 配置视图跳转
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/").setViewName("index");
            registry.addViewController("/index.html").setViewName("index");
            registry.addViewController("/main.html").setViewName("dashboard");
        }
    
        // 将本地化解析器配置到容器中
        @Bean
        public LocaleResolver localeResolver() {
            return new MyLocaleResolver();
        }
    
        // 将视图解析器配置到容器中
        @Bean
        public ViewResolver myViewResolver() {
            return new MyViewResolver();
        }
        
        // 自定义一个视图解析器
        public static class MyViewResolver implements ViewResolver {
            @Override
            public View resolveViewName(String viewName, Locale locale) throws Exception {
                return null;
            }
        }
    }
    
  • 相关阅读:
    Python多线程爬虫爬取电影天堂资源
    BGP协议初探
    dubbo序列化hibernate.LazyInitializationException could not initialize proxy
    Spring Boot打包war jar 部署tomcat
    HSSFClientAnchor 参数说明
    attempt to create delete event with null entity
    解决BUG:CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default
    Android Studio :enable vt-x in your bios security,已经打开还是报错的解决方法
    visual studio 2015 开发android
    ASP.NET用QQ,网易发送邮件以及添加附件
  • 原文地址:https://www.cnblogs.com/danhuang/p/12829744.html
Copyright © 2020-2023  润新知