zoukankan      html  css  js  c++  java
  • java spring boot 拦截器 实现未登录用户不能登录

    java spring boot  拦截器 实现未登录用户不能登录

    拦截器可以理解为PHP的前置控制器  运行控制器前的触发

    1 先创建个拦截器

    package com.example.demo212;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    import cn.hutool.json.JSONObject;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.PrintWriter;
    
    public class MyInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            if (request.getSession().getAttribute("user") == null) {
                response.setCharacterEncoding("UTF-8");
                response.setContentType("application/json; charset=utf-8");
                PrintWriter out = null;
                try {
                    JSONObject res = new JSONObject();
                    res.put("success", false);
                    res.put("message", "用户未登录!");
                    out = response.getWriter();
                    out.append(res.toString());
                    return false;
                } catch (Exception e) {
                    e.printStackTrace();
                    response.sendError(500);
                    return false;
                }
            }
            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 {
    
        }
    }

    2 写拦截器配置

    package com.example.demo212;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            // 注册拦截器
            InterceptorRegistration ir = registry.addInterceptor(new MyInterceptor());
            // 添加拦截请求
            ir.addPathPatterns("/*");
            // 添加不拦截的请求
            ir.excludePathPatterns("/login");
    
            // 以上三句代码可以使用下面的代替
            // registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*").excludePathPatterns("/login");
        }
    }
    package com.example.demo212;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.validation.annotation.Validated;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.validation.constraints.*;
    
    
    @SpringBootApplication
    @RestController
    @Validated
    public class Demo212Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Demo212Application.class, args);
        }
        @RequestMapping("/getUser")
        public String getUserStr(String name, Integer age) {
            return "name: " + name + " ,age:" + age;
        }
        @GetMapping("/login")
        public String Login(){
            return "login";
        }
    
        @GetMapping("/add")
        public String add(){
            return "add";
        }
    }

    运行http://localhost:8080/add

    显示

    {"message":"用户未登录!","success":false}
  • 相关阅读:
    嵌入式成长轨迹27 【Linux应用编程强化】【中嵌第二阶段】【进程管理】
    嵌入式成长轨迹24【Linux应用编程强化】【Linux下的C编程 下】【实例:Linux命令实现】
    纯CSS代码实现翻页
    Adodb.Stream读取和写入UTF8编码的文件
    对c#拆装箱的性能分析(泛型)
    js自动更换图片代码(收藏)
    提高网站可用性的10个小技巧
    分享下我的家乡语言——湘潭话
    解析用户研究
    HTML5 搭建移动Web应用
  • 原文地址:https://www.cnblogs.com/newmiracle/p/12769748.html
Copyright © 2011-2022 走看看