Mirage.Token 特性
约 338 字大约 1 分钟
2025-02-12
不携带任何有用信息
比 JWT 更短
可以让指定 Token 失效
部署 TokenServer
Mirage.Token 需要先部署一个密钥服务: TokenServer。
直接下载运行
下载地址
下载对应操作系统的 TokenServer 压缩文件,解压后,运行 Mirage.TokenServer.exe(windows)或者 Mirage.TokenServer(linux)
生成 Token
Mirage 工程引用 nuget 包:Mirage.Token
在 Program.cs 中添加验证服务:
//假设您的TokenServer地址为:127.0.0.1:9911
services.AddMirageTokenAuthentication(new NetAddress("127.0.0.1", 9911));
在 Controller 中注入 TokenClient 对象
public class DemoController : BaseController
{
TokenClient _tokenClient;
public DemoController(TokenClient tokenClient)
{
this._tokenClient = tokenClient;
}
/// <summary>
/// 登录
/// </summary>
/// <param name="name">用户名</param>
/// <param name="password">密码</param>
/// <returns>身份令牌</returns>
public string Login(string name,string password)
{
if (name != "jack" || password != "123")
throw new ServiceException("用户名密码错误");
var expireTime = DateTime.Now.AddMinutes(20);//20分钟过期
//生成token
var token = _tokenClient.Build(name, expireTime);
return token;
}
}
Token 验证
需要进行身份验证的 Controller,加上 Mirage.Authorize 特性
通过 this.UserContent 获取 token 的内容
[Mirage.Authorize]
public class AdminController : BaseController
{
/// <summary>
/// 获取当前登录者的用户名
/// </summary>
/// <returns></returns>
public string GetMyName()
{
var username = this.UserContent.FindFirst("Content").Value;
return username;
}
}
让 Token 失效
调用 TokenClient.SetTokenDisable 方法,可以让指定的 token 失效。
public class DemoController : BaseController
{
TokenClient _tokenClient;
public DemoController(TokenClient tokenClient)
{
this._tokenClient = tokenClient;
}
/// <summary>
/// 让指定token失效
/// </summary>
/// <param name="token"></param>
public void DisableToken(string token)
{
_tokenClient.SetTokenDisable(token);
}