93 lines
3.3 KiB
C#
93 lines
3.3 KiB
C#
|
|
using Nirvana.Common;
|
|
using Nirvana.Data;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using YBDevice.Entity;
|
|
|
|
namespace YBDevice.Service.DBServices
|
|
{
|
|
/// <summary>
|
|
/// 接口权限管理
|
|
/// </summary>
|
|
public partial class BaseApplication : Repository<YB_Account>
|
|
{
|
|
public static int ExpiresMin = 60 * 24*7;//60*24*1 登录过期时间,单位为分钟
|
|
public static WebApiOperaModel authInfo = null;
|
|
public static string secureKey = Configs.GetString("SecureKey");
|
|
|
|
/// <summary>
|
|
/// 生成token
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
//public static string Token(WebApiOperaModel model)
|
|
//{
|
|
// //生成token,SecureKey是用于加密token的key
|
|
// byte[] key = Encoding.Default.GetBytes(secureKey);
|
|
// IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
|
|
// IJsonSerializer serializer = new JsonNetSerializer();
|
|
// IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
|
// IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
|
|
// model.expiretime = DateTime.Now.AddMinutes(ExpiresMin);
|
|
// model.gid = Guid.NewGuid().ToString("N");
|
|
// //保存gid到redis
|
|
// //RedisHelpers.Insert($"sc_{model.userid}", model.gid);
|
|
// var token = encoder.Encode(model, key);
|
|
// return token;
|
|
//}
|
|
|
|
|
|
/// <summary>
|
|
/// token解密
|
|
/// </summary>
|
|
/// <param name="token"></param>
|
|
/// <param name="ip">接口访问ip</param>
|
|
/// <returns></returns>
|
|
//public static bool DecodeToken(string token, string ip)
|
|
//{
|
|
// if (string.IsNullOrEmpty(token))
|
|
// {
|
|
// return false;
|
|
// }
|
|
// IJsonSerializer serializer = new JsonNetSerializer();
|
|
// var provider = new UtcDateTimeProvider();
|
|
// IJwtValidator validator = new JwtValidator(serializer, provider);
|
|
// IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
|
// IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); // symmetric
|
|
// IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);
|
|
// var tokens = decoder.Decode(token, secureKey, verify: true);
|
|
|
|
// if (string.IsNullOrEmpty(tokens))
|
|
// {
|
|
// return false;
|
|
// }
|
|
// var info = tokens.ToObject<WebApiOperaModel>();
|
|
// //检查时间是否已经过期
|
|
// if (DateTime.Now > info.expiretime)
|
|
// {
|
|
// return false;
|
|
// }
|
|
// //检查用户ID是否存在
|
|
// if (info.UserId <=0)
|
|
// {
|
|
// return false;
|
|
// }
|
|
// //if (RedisHelpers.stringGet($"sc_{ info.userid}") != info.gid)
|
|
// //{
|
|
// // return false;
|
|
// //}
|
|
// //检查访问的ip是否为token里的ip
|
|
// //if (ip != info.loginip)
|
|
// //{
|
|
// // return false;
|
|
// //}
|
|
// info.expiretime = DateTime.Now.AddMinutes(ExpiresMin);
|
|
// authInfo = info;
|
|
// return true;
|
|
|
|
//}
|
|
}
|
|
}
|