• 登录功能-拦截器应用


    登录功能-拦截器应用

    完整项目 GitHub:https://github.com/MaoYanMovieWeb/maoyanmovie

    在登录功能实现时,如果需要权限控制,若不使用安全框架,使用简单的方式可以使用拦截器。

    拦截器首先先自定义拦截器,将这个自定义拦截器注册,设置需要拦截和放行的域名。

    在目录文件下创建interceptor文件夹,创建Interceptor,java文件,继承HandlerInterceptor接口,同时OverRide三个方法。在preHandler中编写拦截处理代码。

    返回 true/false 表示放行/拦截。

    同时将静态文件放行,通过session判断是否登录,未登录则拦截。

    package com.hut.maoyanmovie.interceptor;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    /**
     * @author HP
     * @data 2020-12-14
     *
     *新建拦截器
     *
     * 自定义拦截器
     */
    public class AuthInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            // 拦截处理代码
    
            //静态资源不被拦截器拦截
            String uri = request.getRequestURI();
            if (uri.endsWith("js")||uri.endsWith("css")||uri.endsWith("jpg")||uri.endsWith("svg")||uri.endsWith("jpg")||uri.endsWith("png")){
                return true ;
            }
            HttpSession session = request.getSession();
            // 获取用户信息,如果没有用户信息直接返回提示信息
            Object userInfo = session.getAttribute("loginUser");
            if (userInfo == null) {
                request.setAttribute("msg","请先登录!");
                request.getRequestDispatcher("logging").forward(request, response);
                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 {
    
        }
    }

    自定义拦截器后,需要注册拦截器。

    新建WebAppConfig.java文件,继承WebMvcConfigurerAdapter类,重写addInterceptor方法。同时加入@Configuration注解,在springboot启动的时候就会该配置类就会被扫描并加载。

    package com.hut.maoyanmovie.interceptor;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    /**
     * @author HP
     * @data 2020-12-14
     * 注册拦截器
     * 新建配置类继承WebMvcConfigurerAdapter类,重写addInterceptors方法
     */
    @Configuration
    public class WebAppConfig extends WebMvcConfigurerAdapter {
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //注册自己的拦截器并设置拦截的请求路径
            registry.addInterceptor(new AuthInterceptor())
                    .addPathPatterns("/interorders/**")
                    .addPathPatterns("/Getcid/**")
                    .addPathPatterns("/add/**")
                    .addPathPatterns("/upload/**")//拦截的路径 
                    .excludePathPatterns(""); //放行的路径
        }
    
    }

    此时已经可以拦截了,访问对应域名会弹出拒绝访问信息。

     

  • 相关阅读:
    combobox获取dataset部分数据的方法
    vs2008设置Jquery自动感知方法
    iOS7 初体验
    数据采集[即与 WEB 相关的功能函数]
    javascript 时间倒计时效果
    有进度条圆周率计算
    python科学计算库
    python随笔
    jieba库
    数据分析模块pandas
  • 原文地址:https://www.cnblogs.com/djhzzl/p/14157059.html
Copyright © 2020-2023  润新知