基于JWT的Token认证机制实现(二)认证过程
登录
-
第一次认证:第一次登录,用户从浏览器输入用户名/密码,提交后到服务器的登录处理的Action层(Login Action);
-
Login Action调用认证服务进行用户名密码认证,如果认证通过,Login Action层调用用户信息服务获取用户信息(包括完整的用户信息及对应权限信息);
-
返回用户信息后,Login Action从配置文件中获取Token签名生成的秘钥信息,进行Token的生成;
-
生成Token的过程中可以调用第三方的JWT Lib生成签名后的JWT数据;
-
完成JWT数据签名后,将其设置到COOKIE对象中,并重定向到首页,完成登录过程;
请求认证
基于Token的认证机制会在每一次请求中都带上完成签名的Token信息,这个Token信息可能在COOKIE中,也可能在HTTP的Authorization头中;
-
客户端(APP客户端或浏览器)通过GET或POST请求访问资源(页面或调用API);
-
认证服务作为一个Middleware HOOK 对请求进行拦截,首先在cookie中查找Token信息,如果没有找到,则在HTTP Authorization Head中查找;
-
如果找到Token信息,则根据配置文件中的签名加密秘钥,调用JWT Lib对Token信息进行解密和解码;
-
完成解码并验证签名通过后,对Token中的exp、nbf、aud等信息进行验证;
-
全部通过后,根据获取的用户的角色权限信息,进行对请求的资源的权限逻辑判断;
-
如果权限逻辑判断通过则通过Response对象返回;否则则返回HTTP 401;
对Token认证的几点认识
-
一个Token就是一些信息的集合;
-
在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;
-
服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;
-
基于上一点,可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;
-
因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;
分类:
Web开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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工具