2020-02-04 16:51:15 +08:00
|
|
|
using System;
|
|
|
|
|
using System.Text.Json;
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
|
using Microsoft.Extensions.Caching.Distributed;
|
2020-08-05 15:29:56 +08:00
|
|
|
using SimApi.Communications;
|
2020-02-04 16:51:15 +08:00
|
|
|
|
2020-08-05 15:29:56 +08:00
|
|
|
namespace SimApi.Helpers
|
2020-02-04 16:51:15 +08:00
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 认证助手
|
|
|
|
|
/// </summary>
|
2020-08-05 15:29:56 +08:00
|
|
|
public class SimApiAuth
|
2020-02-04 16:51:15 +08:00
|
|
|
{
|
|
|
|
|
private IDistributedCache Cache { get; }
|
|
|
|
|
|
2020-08-05 15:29:56 +08:00
|
|
|
public SimApiAuth(IDistributedCache cache)
|
2020-02-04 16:51:15 +08:00
|
|
|
{
|
|
|
|
|
Cache = cache;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 产生一个Token记录并返回Token
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="id"></param>
|
|
|
|
|
/// <returns></returns>
|
2022-05-07 21:30:45 +08:00
|
|
|
public string Login(string id, string type = "user", string token = null)
|
2020-02-18 08:07:51 +08:00
|
|
|
{
|
2020-06-28 06:28:51 +08:00
|
|
|
return Login(id, new[] { type }, token);
|
2020-02-18 08:07:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2020-06-28 06:28:51 +08:00
|
|
|
/// 产生一个Token并记录用户ID角色[多角色]
|
2020-02-18 08:07:51 +08:00
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="id"></param>
|
|
|
|
|
/// <param name="type"></param>
|
|
|
|
|
/// <returns></returns>
|
2022-05-07 21:30:45 +08:00
|
|
|
public string Login(string id, string[] type, string uuid = null)
|
2020-02-04 16:51:15 +08:00
|
|
|
{
|
2020-06-28 06:28:51 +08:00
|
|
|
if (uuid == null)
|
|
|
|
|
{
|
|
|
|
|
uuid = Guid.NewGuid().ToString();
|
|
|
|
|
}
|
2020-08-05 15:29:56 +08:00
|
|
|
var loginItem = new SimApiLoginItem
|
2020-02-04 16:51:15 +08:00
|
|
|
{
|
|
|
|
|
Id = id,
|
|
|
|
|
Type = type
|
|
|
|
|
};
|
|
|
|
|
Cache.SetString(uuid, JsonSerializer.Serialize(loginItem));
|
|
|
|
|
return uuid;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-28 06:28:51 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 退出登陆
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="uuid">登陆标识</param>
|
|
|
|
|
public void Logout(string uuid)
|
|
|
|
|
{
|
2020-08-23 21:42:41 +08:00
|
|
|
if (!string.IsNullOrEmpty(uuid))
|
|
|
|
|
{
|
|
|
|
|
Cache.Remove(uuid);
|
|
|
|
|
}
|
2020-06-28 06:28:51 +08:00
|
|
|
}
|
|
|
|
|
|
2020-02-04 16:51:15 +08:00
|
|
|
}
|
|
|
|
|
}
|