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;
            }
        }
    }
    
  • 相关阅读:
    v4l2程序实例
    uboot的readme导读
    基于Linux的v4l2视频架构驱动编写
    V4L2
    Uboot优美代码赏析1:目录结构和malkefile分析
    查找 mysql 配置文件 my.cnf
    thinkphp中array_diff运行无效 Invalid opcode 153/1/8
    thinkphp后端开发ajax接口开发测试
    Thinkphp getLastSql函数用法
    web日志分析的重要性
  • 原文地址:https://www.cnblogs.com/danhuang/p/12829744.html
Copyright © 2011-2022 走看看