资讯专栏INFORMATION COLUMN

拦截器咋个使用?

nanchen2251 / 1383人阅读

摘要:咋个在云南方言是怎么的意思,标题的意思就是拦截器怎么使用太多的概念我们在这里就不细讲,主要讲一讲怎么使用,给大家讲一个舍友的故事是我的一个大学舍友,刚上大学的时候相中了隔壁班的一个女生,在我们的怂恿下,他终于要到了那个女生的号码,趁着周末约

咋个:在云南方言是怎么的意思,标题的意思就是“拦截器怎么使用?”

太多的概念我们在这里就不细讲,主要讲一讲怎么使用,给大家讲一个舍友Mic的故事:

Mic是我的一个大学舍友,刚上大学的时候 相中了隔壁班的一个女生,在我们的怂恿下,他终于要到了那个女生的号码,趁着周末Mic约这个女生去看某个明星的演唱会(假设没有大麦等等,需要现场购票),过安检的时候,检票人员发现Mic和那个女生没有买票,就阻止他们进入会场并告知他们到什么地方买票,他们来到了售票大厅买了票顺利的通过检票进入会场,其他舍友和我刚好遇到会场,让Mic出来拿一个充电宝,Mic出来之后又一次通过的检票区进入了会场,和女神度过了难忘的一天。
(以上纯属瞎编乱造)

故事逻辑如上图

其中检票去扮演的是拦截器的角色,售票大厅扮演Cookie登记角色,会场扮演请求地址

直接贴代码:

登陆界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>



    
        
        Login
    

    
    
    
    
    

    
    

    

        
        

效果:

登陆成功需要写入cookie:
User user = userMapper.selectUserByEmail(loginDto.getEmail());
        
        String md5 = Md5Util.md5(loginDto.getPassword());
        
        if(user==null || StringUtils.isEmpty(user)){
            return null;
        }
        
        if(!(user.getPassword()).equals(md5)){
            return null;
        }
        
        StringBuilder data = new StringBuilder();
        
       data.append(user.getEmail()).append("|").append(user.getPortraitUrl());
        
       //写入cookie,CookieUtil为自己写的工具类
        CookieUtil.setCookie(res, data.toString(), Constant.COOKIE_NAME);
        
        TempUser tempUser = new TempUser();
        tempUser.setEmail(user.getEmail());
        tempUser.setPortraitUrl(user.getPortraitUrl());
        
        return tempUser;
拦截器配置

用于拦截/admin/下的所有子项目:

  
  
        
            
            
        
    

实现HandlerInterceptor接口:判断是否有Cookie存在,若存在放行,若不存在跳转到登录界面

package com.blog.interceptor;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.blog.util.Constant;
import com.blog.util.CookieUtil;

public class LoginInterceptor implements HandlerInterceptor{

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        
    }

    @Override
    public void postHandle(HttpServletRequest req, HttpServletResponse res, Object arg2, ModelAndView arg3)
            throws Exception {
    }

    @Override
    public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object arg2) throws Exception {
        
        
        /*
         * 网站前缀
         */
        String basePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+req.getContextPath()+"/";
        
        boolean cookie = CookieUtil.getCookie(req, Constant.COOKIE_NAME);
        
        if(cookie==false){
            res.sendRedirect(basePath+"login");
            return false;
        }
        
        return true;
        
        
    }

}

若没有登录成功:
访问http://localhost:8080/Blog/admin/index跳转回登录界面

若登陆成功写入Cookie:
访问http://localhost:8080/Blog/admin/index 放行

最近正在写自己的个人博客,也想把它当作应聘工作时的项目展示,希望大家多给我提提意见,谢谢!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70663.html

相关文章

  • Angular4 动态加载组件杂谈

    摘要:最近接手了一个项目,客户提出了一个高大上的需求要求只有一个主界面,所有组件通过来显示。 最近接手了一个项目,客户提出了一个高大上的需求:要求只有一个主界面,所有组件通过Tab来显示。其实这个需求并不诡异,不喜欢界面跳转的客户都非常热衷于这种展现形式。 好吧,客户至上,搞定它!这种实现方式在传统的HTML应用中,非常简单,只是在这Angular4(以下简称ng)中,咋个弄呢? 我们先来了...

    testHs 评论0 收藏0
  • [初识C++] 何为最:心酸历史

    摘要:上面需要了解的是这俩个版本都是破蛹成蝶的版本世界挑战榜咋才前三还没挤进去呀,你想想世界上有几千中编程语言,在其中脱颖出来,可以说是天之娇子,凤毛麟角了。支持正版图灵上面买吧,如果没钱买盗版吧学完以后买本正版支持一下,创作不易是吧 ...

    forrest23 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<