Files
Web_AUTSDATA_Mvc_Prod/AUTS.Services/UserLoginHelper.cs
2025-11-20 13:11:05 +08:00

244 lines
8.7 KiB
C#

using AUTS.Domain.Application;
using AUTS.Domain.Entities;
using AUTS.Services.Extensions;
using AUTS.Services.Tool;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Security;
namespace AUTS.Services
{
public static class UserLoginHelper
{
//登录缓存键前缀
/// <summary>
/// 登录缓存键前缀
/// </summary>
//static string CacheUserName { get { return typeof(TBL_UTS_Manage_UserList).Name + "_"; } }
static string CookieName_User = (ConfigHelper.GetConfigString("DBName") + "_User").ToMD5();
static string CookieName_Token = (ConfigHelper.GetConfigString("DBName") + "_Token").ToMD5();
public static TBL_UTS_Manage_User GetUserLoginBy(string keyword, string password)
{
//string pwd = password.ToMD5().ToMD5();
string pwd = password.ToMD5().ToMD5();
//TBL_UTS_Manage_User matchedSList = SqlSugarBase.Db.Queryable<TBL_UTS_Manage_User>().First(x=>x.UserName== keyword && x.Password == pwd);
//if (matchedSList != null)
//{
// HttpContext.Current.Session[CookieName_User] = matchedSList;
// CookieExtensions.WriteCookie(CookieName_User, keyword, 60);
// CookieExtensions.WriteCookie(CookieName_Token, keyword.ToMD5() + "" + pwd, 60);
// return matchedSList;
//}
using (var db = new Uts_ManageEntities())
{
//var account = db.TBL_UTS_Manage_User.SingleOrDefault(a => (a.UserName == keyword.Trim()) && a.Password == password);
var account = db.TBL_UTS_Manage_User.SingleOrDefault(a => (a.UserName == keyword.Trim()) && a.Password == pwd);
if (account != null)
{
HttpContext.Current.Session[CookieName_User] = account;
CookieExtensions.WriteCookie(CookieName_User, keyword, 60);
CookieExtensions.WriteCookie(CookieName_Token, keyword.ToMD5() + "" + pwd, 60);
return account;
}
}
return null;
}
//获取当前会员登录对象
/// <summary>
/// 获取当前会员登录对象
/// <para>当没登陆或者登录信息不符时,这里返回 null </para>
/// </summary>
/// <returns></returns>
public static TBL_UTS_Manage_User CurrentUser()
{
//校验用户是否已经登录
var user = HttpContext.Current.Session[CookieName_User] as TBL_UTS_Manage_User;
if (user != null) return user;
else
{
if (HttpContext.Current.Request.Cookies[CookieName_User] != null && HttpContext.Current.Request.Cookies[CookieName_Token] != null)
{
string keyword = HttpContext.Current.Request.Cookies[CookieName_User].Value;
string token = HttpContext.Current.Request.Cookies[CookieName_Token].Value;
string pwd = token.Substring(32);
var db = new Uts_ManageEntities();
var account = db.TBL_UTS_Manage_User.SingleOrDefault(a => a.UserName == keyword.Trim() && a.Password == pwd);
if (account != null)
{
return account;
}
}
}
return null;
}
/// <summary>
/// 控制器名
/// </summary>
/// <returns></returns>
public static string Controller()
{
//校验用户是否已经登录
var controllerName = CookieExtensions.GetCookie("controllerName");
if (controllerName != null) return controllerName;
return null;
}
/// <summary>
/// 管理名称
/// </summary>
/// <returns></returns>
public static string ManageName()
{
//校验用户是否已经登录
var ManageName = CookieExtensions.GetCookie("ManageName");
if (ManageName != null) return ManageName;
return null;
}
/// <summary>
/// 方法名
/// </summary>
/// <returns></returns>
public static string ActionName()
{
//校验用户是否已经登录
var actionName = CookieExtensions.GetCookie("actionName");
if (actionName != null) return actionName;
return null;
}
/// <summary>
/// 只读方法名
/// </summary>
/// <returns></returns>
public static string ReadOnlyActionName()
{
//校验用户是否已经登录
var actionName = CookieExtensions.GetCookie("actionReadOnly");
if (actionName != null) return actionName;
return null;
}
//获取当前会员登录对象 异步
/// <summary>
/// 获取当前会员登录对象
/// <para>当没登陆或者登录信息不符时,这里返回 null </para>
/// </summary>
/// <returns></returns>
public static TBL_UTS_Manage_User CurrentUserAsync(System.Web.HttpContext context)
{
//校验用户是否已经登录
var user = context.Session[CookieName_User] as TBL_UTS_Manage_User;
if (user != null) return user;
else
{
if (context.Request.Cookies[CookieName_User] != null && context.Request.Cookies[CookieName_Token] != null)
{
string keyword = context.Request.Cookies[CookieName_User].Value;
string token = context.Request.Cookies[CookieName_Token].Value;
string pwd = token.Substring(32);
var db = new Uts_ManageEntities();
var account = db.TBL_UTS_Manage_User.SingleOrDefault(a => a.UserName == keyword.Trim() && a.Password == pwd);
if (account != null)
{
return account;
}
}
}
return null;
}
//登出
/// <summary>
/// 登出
/// </summary>
public static void UserLogout()
{
if (CheckUserLogin())
{
//获取会员ID
var id = HttpContext.Current.User.Identity.Name;
FormsAuthentication.SignOut();
RemoveUser(id);
}
}
//移除指定会员ID的登录缓存
/// <summary>
/// 移除指定会员ID的登录缓存
/// </summary>
/// <param name="ID"></param>
public static void RemoveUser(string ID)
{
//MvcCore.Extensions.CacheExtensions.ClearCache(cacheUserName + ID);
HttpContext.Current.Session.Clear();
HttpCookie hc1 = HttpContext.Current.Request.Cookies[CookieName_User];
hc1.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(hc1);
HttpCookie hc2 = HttpContext.Current.Request.Cookies[CookieName_Token];
hc2.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(hc2);
}
//判断当前访问是否有会员登录
/// <summary>
/// 判断当前访问是否有会员登录
/// </summary>
/// <returns></returns>
public static bool CheckUserLogin()
{
if (HttpContext.Current.Request.Cookies[CookieName_User] != null && HttpContext.Current.Request.Cookies[CookieName_Token] != null)
{
string keyword = HttpContext.Current.Request.Cookies[CookieName_User].Value;
string token = HttpContext.Current.Request.Cookies[CookieName_Token].Value;
string pwd = token.Substring(32);
var db = new Uts_ManageEntities();
try
{
var account = db.TBL_UTS_Manage_User.SingleOrDefault(a => a.UserName == keyword.Trim() && a.Password == pwd);
if (account != null) return true;
}
catch (Exception ex)
{
throw;
}
}
return false;
}
////当前在线会员数量
///// <summary>
///// 当前在线会员数量
///// </summary>
//public static int UserCount
//{
// get
// {
// return CacheExtensions.GetAllCache().Where(s => s.StartsWith(CacheUserName)).Count();
// }
//}
}
}