在Asp.Net Core中使用JWT认证(五) - 结束篇 一些常见问题

作者 the7
发布于 2020年01月30日
评论 0
浏览 353
文章系列目录
在Asp.Net Core中使用JWT认证(一) - JWT介绍
在Asp.Net Core中使用JWT认证(二) - .Net Core中使用
在Asp.Net Core中使用JWT认证(三) - RSA非对称加密
在Asp.Net Core中使用JWT认证(四) - 跨语言使用
在Asp.Net Core中使用JWT认证(五) - 结束篇 一些常见问题

前边几篇文章,大致介绍了下什么是JWT,以及如何在项目中使用,其实关于JWT还有很多细节,也有很多问题,我把最常见的问题整理一下。

如何退出?

JWT退出不了 ,一个token颁发出去后,在有效时间内都是有效的。如真有退出需求,可试试以下方法

  • 服务器端配合Redis等技术,将token保存起来,然后再对每次请求进行对比验证。如客户端发出退出需求,那么就移除相关token,使之失效。

  • 客户端假退出,所谓假退出,是不去服务器执行任何signout代码,常见方式是清理掉存在客户端的token,它可能存于cookie、localstorage、keyChain 等,清理掉之后再退回到登录页即可。

如何续约

JWT颁发的token,一般都会有个有效期,且时间不建议过长,那么到期前该怎么续约呢?这里就必须引进refresh token,用户在首次登录成功之后,会得到大概如下结果

{
    "JwtToken":"",
    "RefreshToken":"",
    "ExpireDateTime":15343344412
}

客户端在拿到数据之后会存起来,且会不定时检查过期时间,如果快要过期了,凭RefreshToken去服务器换取新的JwtToken。

Web中如何使用JWT

一般JWT用于App、小程序、单页应用等,如果是传统web程序,貌似就不行了,毕竟页面之间的跳转,也无法带上token。但事实上,JWT稍微改一下,依然可以用于Web,具体方法如下。

  • 登录成功后,将token写入cookie。

  • 利用.Net Core强大的中间件,在每次请求时,将cookie再附加进header即可,大概代码如下

     context.Request?.Headers?.Append("Authorization", "Bearer " + cookie);
    

0条评论

请先登录后发表评论
提交评论
标签云
css (1) less calc (1) C# (4) C#进制转换 (1) asp.net core (8) Authentication (1) 注销 (1) 登录 (1) 验证 (1) scroll-view (1) 微信小程序 (4) 滚动到底部 (1) StackExchange.Redis (1) google (1) 百度 (1) nginx (2) 大文件 (2) 微信小程序c#解密 (1) 微信小程序获取手机号 (1) openid (1) session_key (1) CDN (1) URL鉴权 (1) 阿里云 (1) async (1) await (1) 禁止下拉上滑效果 (1) Index类型 (1) Range类型 (1) dontent publish (1) dotnet publish在线生成器 (1) System.DrawingCore.GDIPlus报错 (1) centos (1) 中文字体 (1) SqlBulkCopy (1) SqlSugar (1) JWT (5) 认证 (3) RSA JWT (1) 非对称加密 (1) 写信 (1) 见字如面 (1) 优化建议 (2) 正确操作字符串 (1) Java (1) JWT退出 (1) RefreshToken (1) .NET Core网站开发框架 (1) Moz (3) 墨子 (1) JSON.NET (1) Newtonsoft (1) System.Text.Json (1) 自定义后台路径 (1) .netcore (1) quartz (2) 作业调度框架 (1) 作业调度 (1) 定时任务 (1) exception (1) 异常处理 (1) HttpClient (1) IHttpClientFactory (1) RDM (1) Redis (1) Redis Desktop Manager (1) RedisDesktopManager (1) linux (1) mac (1) windows (1) Could not get any response (1) postman (1) leetcode (2) 力扣 (1) 回文字符串 (1) 面试刷题 (1) centos7 (1) php安装 (1) 网易云插件 (1) 马甲App (1) Discuz插件 (1) 网易云音乐 (1) Blazor (1) 五子棋 (1) c#解题 (1) 最长连续序列 (1) Swagger (1) 在线文档 (1) blob (1) mp4 (1) 视频 (1) big file (1) 上传 (1) s (1) Azure (1) Azure Key Vault (1) Configuration (1) 密钥保管库 (1) Dapper安装 (1) Dapper是什么 (1) Dapper连接Mysql (1) Dapper连接SqlServer (1) dapper (1)