Yuebon.NetCore/Yuebon.AspNetCore/Mvc/TokenProvider.cs
(开头部分) 9KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Text;
using Yuebon.Commons.Options;
using Yuebon.Security.IServices;
using Yuebon.Security.Models;
namespace Yuebon.AspNetCore.Mvc;
/// <summary>
/// Token令牌提供类
/// </summary>
public class TokenProvider
{
JwtOption _jwtModel=Appsettings.GetService<JwtOption>();
IRoleService _roleService = Appsettings.GetService<IRoleService>();
IAPPService _appService = Appsettings.GetService<IAPPService>();
/// <summary>
/// 构造函数
/// </summary>
public TokenProvider() { }
/// <summary>
/// 构造函数,初花jwtmodel
/// </summary>
/// <param name="jwtModel"></param>
public TokenProvider(JwtOption jwtModel)
{
_jwtModel = jwtModel;
}
/// <summary>
/// 直接通过appid和加密字符串获取访问令牌接口
/// </summary>
/// <param name="granttype">获取access_token填写client_credential</param>
/// <param name="appid">用户唯一凭证AppId</param>
/// <param name="secret">用户唯一凭证密钥,即appsecret</param>
/// <returns></returns>
public TokenResult GenerateToken(string granttype, string appid, string secret)
{
var keyByteArray = Encoding.UTF8.GetBytes(secret);
var expires = DateTime.UtcNow.Add(TimeSpan.FromMinutes(_jwtModel.Expiration));
var tokenDescripor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[] {
new Claim(YuebonClaimConst.Audience,appid),
new Claim(YuebonClaimConst.Issuer,_jwtModel.Issuer),
new Claim(YuebonClaimConst.Subject, GrantType.ClientCredentials)
}, granttype),
Expires = expires,
//对称秘钥SymmetricSecurityKey
//签名证书(秘钥,加密算法)SecurityAlgorithms
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(keyByteArray), SecurityAlgorithms.HmacSha256Signature)
};
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescripor);
var tokenString = tokenHandler.WriteToken(token);
TokenResult result = new TokenResult();
result.AccessToken = tokenString;
result.ExpiresIn = (int)TimeSpan.FromMinutes(_jwtModel.Expiration).TotalMinutes;
return result;
}
后面还有 172 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。