zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
    
  • 相关阅读:
    125-PHP类__set()魔术方法
    124-PHP类析构函数
    123-PHP类构造函数
    122-PHP类成员函数(三)
    121-PHP类成员函数(二)
    120-PHP调用成员方法并将不同类的对象做为参数
    119-PHP调用private成员的方法
    118-PHP调用带参数的成员方法
    117-PHP在外部无法调用private类成员函数
    HDU-2045 不容易系列之(3)—— LELE的RPG难题 找规律&递推
  • 原文地址:https://www.cnblogs.com/danhuang/p/12829744.html
Copyright © 2011-2022 走看看