首页 > 其他分享 >关于Sa-token过程的一些解析

关于Sa-token过程的一些解析

时间:2023-11-13 12:22:06浏览次数:31  
标签:SaLoginModel 登录 Token 用户 token 参数 Sa 解析

1.Sa-Token是什么?

  Sa-Token 是一个基于 Java 的轻量级身份认证和授权框架,用于简化和加强应用程序的用户认证和权限管理功能。它提供了一套简洁的 API,使开发者可以轻松地实现用户登录、权限验证、会话管理等功能。

2.如何生成token?

  根据用户id生成一串token字符串(一般来讲),根据这个已经够用。

3.c端登录流程

  1>首先用户使用 StpUtil.login() 方法进行登录,此登录方法会根据其中一个参数-用户id生成一串token标识。

  2>接下来让我们看一下此登录方式的登录参数有哪些以及具体含义:

    1)Object id -- 这个参数表示的是用户的唯一标识id。

    2)SaLoginModel loginModel -- 这个参数是登录参数模型:

      用于在用户登录时传递登录相关的参数。具体来说,SaLoginModel 中包含了一些用于定制登录行为的属性,主要包括以下参数:

      1.isLasting:布尔值,表示用户是否持久化登录,即是否记住登录状态。若设置为 true,则用户在下次登录时无需重新输入用户名和密码,直接使用上次生成的 Token 进行登录。

      2.device:字符串,表示用户登录的设备标识,用于支持多端登录。例如可以在不同设备上使用不同的标识进行登录,从而实现多端登录的控制。

      3.timeout:长整型,表示 Token 超时时间,单位为秒。通过设置该值,可以控制 Token 的有效期时长,超时后需要重新登录。

      通过 SaLoginModel 中的这些参数,你可以灵活地定制用户的登录行为,例如实现记住登录、多端登录控制等功能。在调用 public static void login(Object id, SaLoginModel loginModel) 方法时,可以传入一个 SaLoginModel 的实例,从而实现对登录行为的定制控制。

    3)登录参数模型也可以这样写:new SaLoginModel().setDevice(device).setExtra("name", saBaseLoginUser.getName())  完整的如下:

StpUtil.login(saBaseLoginUser.getId(), new SaLoginModel().setDevice(device).setExtra("name", saBaseLoginUser.getName()));

      这里面的 setExtra 是指可以在参数模型里面添加额外参数,这里的额外参数是指除了用户 ID 以外,附加存储在 Token 中的一些用户相关的信息。这些额外参数可以是任何对象或者值,用于存储一些与用户相关的自定义数据,例如用户的角色、姓名、手机号码等。

  3>token存储:存储在session中,需要后台返回给前台,当然在Sa-Token里面会自动刷新token覆盖旧的tokne。

  4>token获取方式:

    1)获取用户信息:

stpLogic.getTokenSession().get("loginUser");

    2)获取token的值:

StpUtil.getTokenInfo().tokenValue;

    3)其他可参照官方文档进行了解:https://sa-token.dev33.cn

4.附加一个解释:通常情况下,Sa-Token 生成的 Token 会放置在 HTTP 响应的头部中,具体使用的头部字段通常是 Authorization,例如:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwidXNlcm5hbWUiOiJhZG1pbiJ9.CnST7UHe5j98Y3bkHf_N_vwzQt0qroKadVTnXJF9qIw

 

标签:SaLoginModel,登录,Token,用户,token,参数,Sa,解析
From: https://www.cnblogs.com/baoguiying/p/17828864.html

相关文章

  • Android并发编程高级面试题汇总(含详细解析 二)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • 【算法】友谊与雪花的舞动,脚本解析器原理
    在11月的下雪天,小悦身处于温暖的办公室中,窗外的雪花在灯光下翩翩起舞。她盯着电脑屏幕,不经意间,一个熟悉的身影从办公室门口处经过,吸引了她的目光。那个人看上去很像是一个女孩,名叫苏菲,是她在大学时期遇到的国外交换生。小悦的心跳加速,她有些不敢相信自己的眼睛。在她的记忆中,苏菲......
  • Kubernetes API Codec 解析
    概述在KubernetesAPI多版本和序列化这篇文章中,介绍了API多版本的功能和实现原理,其中Codec就是用来做序列化工作的,它主要用在两个地方:一个是通过HTTP协议跟客户端进行交互时,会对传输的数据进行序列化和反序列化,将字节流类型的数据转换成对应的API对象,或者是将API对象转换成对......
  • Kubernetes API Scheme 解析
    概述在KubernetesAPI多版本和序列化这篇文章中,介绍了API多版本的功能和实现原理,其中Scheme就是其实现原理的一项重要机制,在平时的开发中也经常会遇到,本篇文章就对其进行下分析。Scheme起到了一个类型(Type)注册中心的作用,在APIServer内部,全局只有一个Scheme实例,各个版本的API......
  • 解决javax.persistence.RollbackException: Transaction marked as rollbackOnly Ask
    解决javax.persistence.RollbackException:TransactionmarkedasrollbackOnlyAsk在使用JavaPersistenceAPI(JPA)进行对象关系映射(ORM)的Java企业应用中,经常会遇到javax.persistence.RollbackException异常,其中的错误信息为"TransactionmarkedasrollbackOnly"。这......
  • P2687 [USACO4.3] 逢低吸纳 题解
    双倍经验分析这是一道求最长下降子序列的题目,且要统计方案,但是会有重复情况,例如以下的的数据,44223我们可以选择\(1,2\),\(1,2\),\(1,4\)这几天来购买,但是\(1,2\)和\(1,3\)本质上是一样的,所以只算一种。根据上面的说明,我们可以得出:当\(dp_j+1=dp_i\)......
  • RSAtool2的使用
    学习RSAtool2的使用:NumberBase设置为十进制A2.注意:PublicExponent这里要使用16进制的数,如果公钥e=17的话,就应该填入十六进制的11给出p,q,e的话直接填入,再点击Calc.D,获得给出的是n和e的话,输入n和e,点击FactorN(分解),得到p,q,再重复第3步就能得到d了注意e填进去是16进制,需......
  • scrapy解析数据,配置文件,整站爬取cnblogs,持久化
    1scrapy解析数据......
  • JavaScript的数据交换格式XML和JSON的解析------前端
    XML和JSON数据的解析<!DOCTYPEhtml><!--这是HTML的注释--><htmllang="en"id="myHtml"> <head> <!--这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码--> <metacharset="UTF-8"> <metaname="viewport&quo......
  • SAP:创建结构
    环境:SAPECC6EHP7(WIN2003+SQL2008) 创建ZSPH_ITEMS结构。命令SE11, 预预览效果:步骤:第一步:在数据类型栏输入 结构名称,如“ZSPH_ITEMS”. 点击"创建"按钮第二步:在创建类型 窗口选择“结构”选项,并点击“确定”按钮。   第三步:在组件页签输入结构字段,在组件类......