• Web开发笔记(登入,注册,记录登入状态, 拦截器)


    Web开发笔记(登入,注册,记录登入状态,拦截器)

    注册功能

    注册的功能的实现是比较简单的,但是涉及到一些问题

    • 用户名检测(长度,敏感词汇,重复,特殊字符(html,js脚本,sql注入))
    • 密码长度要求,强度检测,salt加密,(md5)
    • 用户邮件/短信激活(注册太随意脚本攻击,浸入垃圾非法信息)

    登录功能

    • 用户登入,在web端记录cookie或者token,或者app中token记录登入状态
    • 登出,删除,session清理等。

    拦截器

    我们需要一个实现HandlerInterceptor接口的类来编写拦截器实体

    package com.example.demo.interceptor;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @Component
    public class TestInterceptor implements HandlerInterceptor {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            //请求开始前
    		System.out.println("这里是拦截器");
            return false; //false就拦截了
        }
    
        @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 {
            //渲染完后,用来释放资源
    
        }
    }
    
    

    我们需要一个地方加入刚刚的拦截器,继承WebMvcConfigurerAdapter的类

    package com.example.demo.configuration;
    
    import com.example.demo.interceptor.TestInterceptor;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    @Component
    public class Wendaconfigration extends WebMvcConfigurerAdapter {
    
        @Autowired
        TestInterceptor testInterceptor;
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(testInterceptor);
            super.addInterceptors(registry);
        }
    }
    
    

    我们可以用拦截器带以及跳转完成未登入跳转等功能

  • 相关阅读:
    Mysql升级过程的问题
    关于SSM项目注解事务不回滚的问题
    Linux环境下tomcat如何热部署
    Windows系统下python3中安装pyMysql
    jvm性能监控及故障处理工具(《深入理解java虚拟机》)
    jvm垃圾回收器(《深入理解java虚拟机》)
    jvm-运行时数据区域(《深入理解java虚拟机》)
    java源码分析-String
    java源码分析-Object
    2019秋季PAT甲级题解(无第一题)
  • 原文地址:https://www.cnblogs.com/Q1143316492/p/10357831.html
Copyright © 2020-2023  润新知