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 { //登录缓存键前缀 /// /// 登录缓存键前缀 /// //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().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; } //获取当前会员登录对象 /// /// 获取当前会员登录对象 /// 当没登陆或者登录信息不符时,这里返回 null /// /// 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; } /// /// 控制器名 /// /// public static string Controller() { //校验用户是否已经登录 var controllerName = CookieExtensions.GetCookie("controllerName"); if (controllerName != null) return controllerName; return null; } /// /// 管理名称 /// /// public static string ManageName() { //校验用户是否已经登录 var ManageName = CookieExtensions.GetCookie("ManageName"); if (ManageName != null) return ManageName; return null; } /// /// 方法名 /// /// public static string ActionName() { //校验用户是否已经登录 var actionName = CookieExtensions.GetCookie("actionName"); if (actionName != null) return actionName; return null; } /// /// 只读方法名 /// /// public static string ReadOnlyActionName() { //校验用户是否已经登录 var actionName = CookieExtensions.GetCookie("actionReadOnly"); if (actionName != null) return actionName; return null; } //获取当前会员登录对象 异步 /// /// 获取当前会员登录对象 /// 当没登陆或者登录信息不符时,这里返回 null /// /// 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; } //登出 /// /// 登出 /// public static void UserLogout() { if (CheckUserLogin()) { //获取会员ID var id = HttpContext.Current.User.Identity.Name; FormsAuthentication.SignOut(); RemoveUser(id); } } //移除指定会员ID的登录缓存 /// /// 移除指定会员ID的登录缓存 /// /// 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); } //判断当前访问是否有会员登录 /// /// 判断当前访问是否有会员登录 /// /// 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; } ////当前在线会员数量 ///// ///// 当前在线会员数量 ///// //public static int UserCount //{ // get // { // return CacheExtensions.GetAllCache().Where(s => s.StartsWith(CacheUserName)).Count(); // } //} } }