token

token

1.简介

  一般是用户登录成功,服务器会颁发一个token并返回给前端。前端将token保持在cookie或者localStorage里面,然后每次请求是都会带上这个token,一般都带在请求头里面。

2.token的内容

一般token里面必须有的是:

(1)会话用户标识:比如userid。

(2)token的过期时间,如果想更完整一点,可以加上token的颁发者,签名等等。

3.token的生成算法

  一般是由服务器端将token的主要内容,过期时间等等做非对称加密,然后进行签证算法(防止客户端更改),具体看后面Jwt

4.token校正

当服务器收到请求时,首先校正token,校正有二种不同的方式。

(1)token生成后保存在服务器端(redis或者其他速度比较快的缓存中)。

     优点:可控性强,可以用这个用来做单点登录,比如用另一个地方登录,就remove掉之前的token。

     缺点:实现麻烦一点,并且占服务器内存。

(2)token生成后服务器不负责保存只负责校验。

     优点:大大的减轻了服务器的压力。实现起来相对简单些。

     缺点:一旦颁发就不可控,只能让它自动过期。

Jwt

1.Jwt全面Json Web Token,算是一种token规范。

2.组成有三部分

   (1)Header:头部,一般包括token的签名方式。

   (2)PayLoad:负载,也就是具体有效部分。

   (3)Signature:签名,将前两部分进行签名算法,防止被篡改。

  实现方式,将Header部分和payLoad部分分别进行base64算法,然后用点号“.”隔开拼接,然后进行签名算法,

  然后在将三部分拼接(点号隔开)就得到Jwt

  注意:jwt默认是采用base64编码的,也就是说客户端也能解码得出具体内容,所以除非特殊情况,重要敏感字段一等不能放在token中。

  下面是具体实现:

  创建个Jwt类

  

  使用方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public ActionResult LoginTokenCode(string username,string userpwd)
       {
           //todo 验证用户名密码正确
           if (username!="sa" && userpwd!="123")
           {
               return View("LoginToken");
           }
           //在token中加入用户id,创建token
           var dic = new Dictionary<string, object>();
           dic.Add("Id", "qwe");
           string token = Jwt.Create(dic);
           //验证token是否正确是否过期
           var isChecked = Jwt.Check(token);
           return Content("成功!!");
       }

  

    更详细:http://www.mamicode.com/info-detail-2637888.html

posted @   我的未来方程式i  阅读(539)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示