springboot~用正则表达式提取bearer token

  • 前后一体的应用,是这样进行认证的

  • 用户向服务端发送验证信息(用户名、密码);

  • 服务端验证成功就向用户返回一个sessionid;
  • 服务端保存了这个session_id对应的信息,并写入用户的 Cookie;
  • 之后的每一次请求,都会通过Cookie,将session_id传回服务端,服务端收到session_id,找到对应的数据,由此得知用户的身份。

  • 前后分离之后,是这样进行认证的
    bearer token是一种认证方式,是一种安全令牌,拥有 bearer token 的任何一方(被称为 “bearer”),可以以任何方式,和同样持有它的任何一方一样地使用它来访问受 OAuth 2.0保护的资源。

参考:https://www.rfc-editor.org/rfc/rfc6750

springboot~用正则表达式提取bearer token
  • 在java带中,我们一般把bearer token放到请求头的 Authorization中,我们可以通过正则来判断token的合法性,并返回头中的有效token
private String resolveFromAuthorizationHeader(HttpServletRequest request) {
  String authorization = request.getHeader("Authorization");
  Pattern authorizationPattern = Pattern.compile("^Bearer (?<token>[a-zA-Z0-9-:._~+/]+=*)$", Pattern.CASE_INSENSITIVE);//<token>&#x7684;&#x503C;&#x5C31;&#x662F;&#x771F;&#x5B9E;&#x7684;&#x8868;&#x8FBE;&#x5F0F;&#x914D;&#x7F6E;&#x7684;&#x503C;

  if (!StringUtils.startsWithIgnoreCase(authorization, "bearer")) {
     return null;
 }
 Matcher matcher = authorizationPattern.matcher(authorization);
 if (!matcher.matches()) {
   BearerTokenError error = BearerTokenErrors.invalidToken("Bearer token is malformed");
   throw new OAuth2AuthenticationException(error);
 }
return matcher.group("token");//&#x4ECE;&#x4E0A;&#x9762;&#x7684;&#x6B63;&#x5219;&#x8868;&#x8FBE;&#x5F0F;&#x4E2D;&#x83B7;&#x53D6;token
}
</token></token>

Original: https://www.cnblogs.com/lori/p/16595467.html
Author: 张占岭
Title: springboot~用正则表达式提取bearer token

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576074/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • mybatis SelectKey解析

    1.selectKey介绍及作用 resultType:sql返回的java类型 statementType:STATEMENT|PREPARED|CALLABLE三种默认PREP…

    数据库 2023年5月24日
    087
  • sarama Kafka客户端生产者与消费者梳理

    生产者 sarama 库提供了同步生产者和异步生产者。 SyncProducer 是在 AsyncProducer 基础上加以条件限制实现的。 type SyncProducer …

    数据库 2023年6月16日
    068
  • 一元二次方程

    通过分析古巴比伦泥板上的代数问题,可以发现在公元前2250年古巴比伦人就已经掌握了与求解一元二次方程相关的代数学知识,并将之应用于解决有关矩形面积和边的问题。 [2] 相关的算法可…

    数据库 2023年6月11日
    093
  • Arrays.asList()你真的知道怎么用吗?

    发现问题 前几天在看别人的项目的时候,发现一个问题,简单复现一下这个问题 // 注意这是一个Integer对象的数组哦 Integer[] arr = new Integer[]{…

    数据库 2023年6月11日
    071
  • CentOS7.2解决vsftpd启动失败,code=exited,status=2问题的几个方法参考

    【问题说明】重启vsftpd服务失败:[root@data ~]# systemctl restart vsftpdJob for vsftpd.service failed. S…

    数据库 2023年6月14日
    0336
  • 就这么一个简单的校验,80%的程序员却做不到,更不理解!

    在学生管理系统里,其中会有学生信息采集的功能。程序结构不外乎下面的分层实现方式。 开发出来这个功能,我觉得大家都易如反掌了。 当然易如反掌。 OK,我要说的是数据校验,以最简单的非…

    数据库 2023年6月9日
    083
  • AUFS:多点合一,写时复制

    AUFS(全称:advanced multi-layered unification filesystem,高级多层统一文件系统),用于为 Linux 文件系统实现 联合挂载。提到…

    数据库 2023年6月6日
    095
  • MySQL实战45讲 6,7,8

    06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍? Connection连接与Session会话 通俗来讲,会话(Session)是通信双⽅从开始通信到通信结束期间的⼀个上下…

    数据库 2023年5月24日
    086
  • 新建vue项目

    1、CMD中输入命令行 vue ui 打开一个创建项目的窗口 2、安装插件element ui 3、Idea 打开这个项目即可 4、Idea 运行vue项目 npm run ser…

    数据库 2023年6月9日
    0103
  • MySQL–排序检索数据(ORDER BY)

    检索出的数据并不是以纯粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到…

    数据库 2023年6月16日
    079
  • 从join的实现窥探MySQL迭代器

    以如下left join查询语句为范例: select * from t1 left join t2 on t1.c=t2.a ; 以下初始化数据: 1 DROP TABLE IF…

    数据库 2023年6月11日
    099
  • ECMAScript版本知识点汇总

    ECMAScript版本知识点汇总 ES5 btoa、atob 对参数进行base64格式编码、解码 /** * btoa() * base64编码 * @param {strin…

    数据库 2023年6月11日
    0100
  • Java中的锁——锁的分类

    Java中有各种各样的锁,例如公平锁、乐观锁等等,这篇文章主要介绍一下各种锁的分类。 *公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程获取锁的…

    数据库 2023年6月9日
    077
  • MySQL事务

    事务用于保证数据的一致性,由一组相关的dml语句组成,该组的dml语句要么全部成功后提交,要么全部失败。进行一个事物操作时,也可以防止其它用户修改表的数据。 举个例子:转账这个操作…

    数据库 2023年6月16日
    087
  • python-tkinter 自定义tkinter风格的提示框

    博客园的密码终于找回了 前言 偶尔使用python要绘制个简单输入提示框或者复选框窗体,使用tkinter的话绘制窗体也是很麻烦的,想着能不能把它自定义一个简单可复用的提示框。然后…

    数据库 2023年6月11日
    070
  • PHP array_values()

    array_values array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。 示例: function arrayValues() { $dat…

    数据库 2023年6月14日
    0130
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球