首页 > 其他分享 >软工周报23-10-10

软工周报23-10-10

时间:2023-10-10 20:01:23浏览次数:38  
标签:10 请求 corsConfiguration 23 admin 软工 anqi token new

这期主要学习了一些网页安全问题:路由守卫,jwt的使用。经过这一周期的学习,我可以初步做出一个信息较安全,有基础防御措施的网页

解决问题:首先

学了一些请求,与跨域相关的问题,主要研究了option请求的作用,以及如何阻止他对于token令牌获取的干扰这一问题。

首先option请求用于跨域资源共享,当发出跨域Ajax请求时,浏览器会自动发送Option请求,以检查是否允许实际请求。但是这一请求中不能附带一些额外的参数。比如token,这会使系统在进行jwt检测的时候直接报错“token已经失效”,因为没有接收到一个正常的token。当引入下面代码时,可跨过option请求,直接对getpost这类请求进行审核

@Configuration
public class corsConfig {
    @Bean
    public CorsFilter corsFilter(){
        UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration=new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addAllowedOrigin("*");
        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsFilter(source);
    }
}

 

下面这段函数是添加一个阻断器,在使其每次发生请求变化时都要进行jwt检测。当然,并不是所有指令都需要这种检测,后续加上一些可以不进行检测的url

@Override
    public void addInterceptors(InterceptorRegistry reg){
        reg.addInterceptor(jwtInterceptor).addPathPatterns("/anqi/**")
                        .excludePathPatterns("/anqi/admin/login")
                        .excludePathPatterns("/anqi/admin/register")
                        .excludePathPatterns("/anqi/files/**")
                        .excludePathPatterns("/anqi/files/**");


    }

 下面这段函数是一段是jwt过程中token的验证,这次我将token放在header中,以便于提取使用

 public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler){
//        if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
//            System.out.println("OPTIONS请求,放行");
//            return true;
//        }
        //1.获取token
        System.out.println(request.getHeader("token"));

        String token=request.getHeader("token");
        if(StrUtil.isBlank(token)){
            //第一次没拿到 去参数里面拿 比如 /anqi/admin?token=xxx
            System.out.println("token没拿到");
            token=request.getParameter("token");
        }
        //2.开始认证
        if(StrUtil.isBlank(token)){
            throw new CustomException("token已经消失,请重新登录");
        }
        //获取token中的id
        String adminID;
        Admin admin;
        try{
            adminID= JWT.decode(token).getAudience().get(0);
            admin=adminMapper.findByID(Integer.parseInt(adminID));
        }catch (Exception e){
            String msg="token认证失败";
            log.error(msg+",token="+token,e);
            throw new CustomException(msg);
        }
        if(admin==null){
            throw new CustomException("用户不存在请重新登录");
        }
        try{
            //用户密码加签验证token
            JWTVerifier jwtVerifier=JWT.require(Algorithm.HMAC256(admin.getPassword())).build();
            jwtVerifier.verify(token);
        }catch (JWTVerificationException e){
            throw new CustomException("token验证失败请重新登录");
        }
        log.info("token验证成功");
        return true;
    }

 关于如何设置token:为了节省数据库的查询空间,在进行登录时会生成对应的token与用户信息一起存储在localstorage中,一旦信息遭到破坏,上面的阻断器就会生效阻止用户继续访问页面

标签:10,请求,corsConfiguration,23,admin,软工,anqi,token,new
From: https://www.cnblogs.com/kun1790051360/p/17755574.html

相关文章

  • 【Android面试】2023最新面试专题六:Java并发编程(一)
    1、假如只有一个cpu,单核,多线程还有用吗?详细讲解享学课堂移动互联网系统课程:架构师筑基必备技能《线程与进程的理论知识入门1》这道题想考察什么?是否了解并发相关的理论知识考察的知识点cpu多线程的基本概念操作系统的调度任务机制CPU密集型和IO密集型理论考生应该如何回答CPU的执......
  • 2023暑假集训总结
    Part120230807~20230816这段时间主要是lyn学长给我们讲课。和上次寒假集训不同,这次lyn学长准备的东西难度非常之大,大部分都是NOI级的数据结构和算法,比如一些高难数论(exCRT、各种定理等等)、一些奇妙的DP优化、一些奇妙的数学期望、网络流、进阶的线段树,很难,感觉自己只......
  • 狂飙10年后,电动两轮车终究要回归理性
    文|新熔财经作者|一城我国电动两轮车保有量超3.7亿辆,并超越汽车保有量成为中国第一大交通工具,电动两轮车“国民级产品”当之无愧。但是,历经近十年的高速发展,行业却面临一些问题:渠道、门店的拼杀依旧惨烈,销量全靠数以千计、万计的门店堆量,价格战依旧严重;广告花样越来越多,代言人一个比......
  • 12306
    importreimportrequestsdefkeys_values(d,value):returnlist(d.keys())[list(d.values()).index(value)]headers={"Cookie":"_uab_collina=169692832736292006740293;tk=J8HeHzkZevrt4pki7lrzlw0gWQAuAtETriqaAQ09x1x0;JSESSIONID=80DA6......
  • cpsc 103 python基本前提
    python基本知识基本运算符1.(**)是次方ex:2**3evaluatesto(2tothepowerof3)82.(%)是求余数ex:15%4evaluatestobecausetheremainderwhendividing15by4is33基本运算规则1.str乘以数字ex:'hello'*2evalutesto'hellohello'2.[a......
  • LY1376 [ 20231008 NOIP 模拟赛 T0 ] 递增路径
    题意\(A\),\(B\)两人轮流在一张图上移动一个点。要求这次移动的边权必须大于上次的。\(A\)希望游戏进行的轮数多,\(B\)希望游戏进行的轮数少。对于每个\(s=1,2,...,n\)作为起点,若双方都采用最优策略,游戏会进行多少轮。Sol考虑将所有边按照从大到小的顺序排序。每......
  • winget 0x8051100f错误
    解决WinGet0x8051100f错误接手了公司旧的电脑,安装的是精简版的Windows10系统,今天在准备使用winget的时候发现并没有安装。然而这台电脑精简的有点过分了,连MicrosoftStore都没有,装好WinGet之后发现执行的时候居然还会报错0x8a15000f错误。解决方案遇到错误0x8a15000f时,按照以......
  • 20231010
    20231010NOIP#17总结时间安排7:50~8:30看题,\(A,B\)一眼切,\(D\)会\(30\)分,别的不会。8:30~8:50写\(A,B\)的正解。8:50~9:20写\(D\)的\(30\)分,再拼一个特殊性质包。9:20~10:20写\(E\)的第一档暴力,奈何题目错了我还读错了,调了这么长时间等于没调。10:20~11:45......
  • “东三在线”软工项目选题报告
     项目编号:2    "东三在线"软工项目选题报告            "东三在线"团队出品 目录1.    项目目标及意义    31.1.    项目背景    31.2.    项目概述    31.3.    项目目标    31.4.    项目意......
  • 2023.10.1
    2023.10.1T1:​​​​思路展环为链用前缀和记录异或和\(O(1)\)查询T2​​​​思路按题意模拟即可T3​​思路\(O(\sqrt{n})\)枚举b1的因子,并判断T4​​思路dp30pts​dp[i]表示到达i时最少的踩到的石子数100pts因为\(m\le100\)且\(l\le10^9\)......