Exemple #1
0
        /// <summary>
        /// 获取cookie信息
        /// </summary>
        /// <param name="cookie"></param>
        /// <returns></returns>
        public static UserCookie GetHttpCookie(HttpCookie cookie)
        {
            UserCookie user = null;

            if (cookie != null)
            {
                user = new UserCookie();
                user.access_token = HttpUtility.UrlDecode(cookie["access_token"]);
                if (int.TryParse(cookie["expires_in"], out int expires_in))
                {
                    user.expires_in = expires_in;
                }
                user.nickname = HttpUtility.UrlDecode(cookie["nickname"]);
                user.avatar   = HttpUtility.UrlDecode(cookie["avatar"]);
                if (int.TryParse(cookie["id"], out int id))
                {
                    user.id = id;
                }
                user.packageid = cookie["packageid"];
                user.overtdt   = cookie["overtdt"];
                user.panonum   = cookie["panonum"];
            }

            return(user);
        }
Exemple #2
0
        /// <summary>
        /// 后台首页
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            using (DataWallContext db = new DataWallContext())
            {
                var Cookies = SecurityHelper.DecryptDES(CookieHelper.GetCookieValue("User"), db.SysProgramInfos.AsNoTracking().FirstOrDefault().CookieSecretKey);
                if (Cookies != "")
                {
                    UserCookie user = JsonConvert.DeserializeObject <UserCookie>(Cookies);
                    ViewBag.UserName = user.UserName;
                    ViewBag.RoleName = user.RoleName;
                }
                else
                {
                    return(RedirectToAction("Login"));
                }
                SysProgramInfo sysProgramInfo = db.SysProgramInfos.AsNoTracking().FirstOrDefault();
                ViewBag.Title = "数据墙后台管理系统" + sysProgramInfo.ProgramVersion;

                //获取菜单
                List <SysMenu> menuList = db.SysMenus.Where(m => m.IsEnable == 0 & m.DelState == 0).AsNoTracking().ToList();
                ViewData["datalist"] = menuList;

                //模块菜单
                List <SysModule> ModuleMenu = db.SysModules.Where(m => m.IsEnable == 0 & m.DelState == 0 & m.IsAddToMenu == 0).AsNoTracking().ToList();
                ViewData["modulelist"] = ModuleMenu;

                return(View(sysProgramInfo));
            }
        }
Exemple #3
0
        public ActionResult LogOff()
        {
            WebSecurity.Logout();
            UserCookie.CreateInstance(null, HttpContext);

            return(Redirect("/"));
        }
Exemple #4
0
 /// <summary>
 /// Create object follow singleton pattern
 /// </summary>
 /// <returns></returns>
 private static UserCookie currentSession()
 {
     if (instance == null)
     {
         instance = new UserCookie();
     }
     return(instance);
 }
Exemple #5
0
        public ActionResult Logout()
        {
            FormsAuthentication.SignOut();
            UserCookie userCookie = UserCookie.Load <UserCookie>();

            userCookie.Clear();
            return(RedirectToAction("Index", "Account", new { area = "Manage" }));
        }
Exemple #6
0
        /// <summary>
        /// 重置用户登录cookie
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="userCookie"></param>
        public void ResetUserCookie(HttpContextBase ctx, UserCookie userCookie)
        {
            //清除用户登录cookie
            ClearUserCookie(ctx);

            //初始化当前用户
            InitUserCookie(ctx, userCookie);
        }
Exemple #7
0
        /// <summary>
        /// 用户登出
        /// </summary>
        /// <returns></returns>
        public ActionResult Logout()
        {
            FormsAuthentication.SignOut();
            UserCookie userCookie = UserCookie.Load <UserCookie>();

            userCookie.Clear();
            return(RedirectToAction("Index", "Home"));
        }
Exemple #8
0
 /// <summary>
 /// 获取用户名
 /// </summary>
 /// <returns></returns>
 public string GetUserName()
 {
     using (DataWallContext db = new DataWallContext())
     {
         //获取当前登陆用户
         var        Cookies = SecurityHelper.DecryptDES(CookieHelper.GetCookieValue("User"), db.SysProgramInfos.AsNoTracking().FirstOrDefault().CookieSecretKey);
         UserCookie user    = JsonConvert.DeserializeObject <UserCookie>(Cookies);
         return(user.UserName);
     }
 }
Exemple #9
0
 /// <summary>
 /// 获取当前用户可管理场馆
 /// </summary>
 /// <returns></returns>
 public List <SysLibrary> GetLibraryList()
 {
     using (DataWallContext db = new DataWallContext())
     {
         var        Cookies = SecurityHelper.DecryptDES(CookieHelper.GetCookieValue("User"), db.SysProgramInfos.AsNoTracking().FirstOrDefault().CookieSecretKey);
         UserCookie user    = JsonConvert.DeserializeObject <UserCookie>(Cookies);
         var        Libids  = db.SysLibraryUsers.Where(u => u.SysUserID == user.UserId).Select(u => u.SysLibraryId).ToList();
         return(db.SysLibrarys.Where(lib => Libids.Contains(lib.ID) & lib.DelState == 0 & lib.IsEnable == 0).AsNoTracking().ToList());
     }
 }
Exemple #10
0
        /// <summary>
        /// 授权处理
        /// </summary>
        /// <param name="ctx"></param>
        public void OnPostAuthenticateRequest(HttpContext ctx)
        {
            var context = new HttpContextWrapper(ctx);

            var identity = context.User.Identity;

            //已经登录,并已经授权完成
            if (identity.IsAuthenticated && identity.AuthenticationType == "Forms")
            {
                var user = new UserCookie(identity as FormsIdentity);
                context.User = user;
            }
        }
        public UserCookie GetCookie()
        {
            UserCookie u = new UserCookie();

            if (Request.Cookies.AllKeys.Contains("UserId"))
            {
                HttpCookie cookie = Request.Cookies["UserId"];
                u.Value1 = cookie.Value;
                u.Expiry = cookie.Expires;
            }

            return(u);
        }
        /// <summary>
        /// 验证用户状态,用户接口请求验证
        /// </summary>
        /// <param name="cookie"></param>
        /// <returns></returns>
        public bool VerifyUser(UserCookie cookie)
        {
            if (string.IsNullOrWhiteSpace(cookie.AccountAppId) || string.IsNullOrWhiteSpace(cookie.AccountOpenId))
            {
                return(false);
            }
            var appUserAccount = ProviderGateway.AppUserAccountProvider.GetByOpenId(cookie.AccountAppId, cookie.AccountOpenId);

            if (appUserAccount == null || appUserAccount.State != AppUserAccountState.Activated)
            {
                return(false);
            }
            return(true);
        }
        public async Task <ActionResult> GetLoad()
        {
            Load load = new Load();
            var  AutosVehiclesController = new AutosVehiclesController();
            var  CarMakesController      = new CarMakesController();

            load.AutosVehicleF = (IEnumerable <AutosVehicle>) await AutosVehiclesController.GetFeaturedAutos();

            load.CarMake = (IEnumerable <CarMake>) await CarMakesController.GetCarMake();

            UserCookie uc = GetCookie();

            ViewBag.Value  = uc.Value1;
            ViewBag.Expiry = uc.Expiry;
            return(View("Featured_cars", load));
        }
Exemple #14
0
        public ActionResult Login(LoginModel model, string returnUrl)
        {
            if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
            {
                int userId             = WebSecurity.GetUserId(model.UserName);
                ContentManagementDb db = new ContentManagementDb();

                UserProfile user = db.Users.FirstOrDefault(u => u.UserId == userId);
                user.LastLogin = DateTime.Now;
                db.SaveChangesAsync();
                UserCookie.CreateInstance(user, HttpContext);

                return(RedirectToLocal(returnUrl));
            }

            // If we got this far, something failed, redisplay form
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
            return(View(model));
        }
Exemple #15
0
        private void PassCurrentUser()
        {
            string currentUserName = string.Empty;
            bool   isAuthenticated = this.Request.RequestContext.HttpContext.User.Identity.IsAuthenticated;

            if (isAuthenticated == true)
            {
                currentUserName = this.Request.RequestContext.HttpContext.User.Identity.Name;
            }

            if (string.IsNullOrWhiteSpace(currentUserName) == true)
            {
                UserCookie userCookie = UserCookie.Load <UserCookie>();
                currentUserName = userCookie.UserName;
            }

            BusinessUser currentUser = BusinessUserBLL.Get(currentUserName);

            this.ViewBag.CurrentUser = currentUser;
        }
Exemple #16
0
        /// <summary>
        /// 获取写入Cookie的信息
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public static HttpCookie GetWriteCookie(UserCookie user)
        {
            var cookie = new HttpCookie(WebConfigs.CookieName);

            cookie.Domain = WebConfigs.CookieDomain;
            cookie.Values["access_token"] = HttpUtility.UrlEncode(user.access_token);
            cookie.Values["expires_in"]   = HttpUtility.UrlEncode(user.expires_in + "");
            cookie.Values["nickname"]     = HttpUtility.UrlEncode(user.nickname, Encoding.GetEncoding("UTF-8"));
            cookie.Values["avatar"]       = HttpUtility.UrlEncode(user.avatar, Encoding.GetEncoding("UTF-8"));
            cookie.Values["id"]           = HttpUtility.UrlEncode(user.id + "");
            cookie.Values["isads"]        = HttpUtility.UrlEncode(user.isads);
            cookie.Values["isadz"]        = HttpUtility.UrlEncode(user.isadz);
            cookie.Values["packageid"]    = HttpUtility.UrlEncode(user.packageid);
            cookie.Values["overtdt"]      = HttpUtility.UrlEncode(user.overtdt);
            cookie.Values["packagename"]  = HttpUtility.UrlEncode(user.packagename);
            cookie.Values["panonum"]      = user.panonum;
            cookie.Values["integral"]     = user.integral;
            cookie.Expires = DateTime.Now.AddHours(2);

            return(cookie);
        }
Exemple #17
0
        /// <summary>
        /// 设置用户登录cookie
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="userCookie"></param>
        public void InitUserCookie(HttpContextBase ctx, UserCookie userCookie)
        {
            //初始化当前用户
            ctx.User = userCookie;

            var identity = userCookie.Identity as FormsIdentity;

            FormsAuthenticationTicket ticket = identity.Ticket;

            string encTicket = FormsAuthentication.Encrypt(ticket);

            var uc = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
            {
                Path     = ticket.CookiePath,
                HttpOnly = true,
                //Domain = FormsAuthentication.CookieDomain
            };

            //保存cookie
            ctx.Response.Cookies.Add(uc);
        }
Exemple #18
0
 /// <summary>
 /// 数据检查
 /// </summary>
 /// <param name="id"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public bool CheckLibraryId(string id, string name)
 {
     using (DataWallContext db = new DataWallContext())
     {
         var        Cookies = SecurityHelper.DecryptDES(CookieHelper.GetCookieValue("User"), db.SysProgramInfos.AsNoTracking().FirstOrDefault().CookieSecretKey);
         UserCookie user    = new UserCookie();
         if (Cookies != "")
         {
             user = JsonConvert.DeserializeObject <UserCookie>(Cookies);
         }
         var           LibraryIdList = db.SysLibraryUsers.Where(slu => slu.SysUserID == user.UserId).Select(slu => new { slu.SysLibraryId }).AsNoTracking().ToList();
         List <String> idlist        = new List <string>();
         foreach (var item in LibraryIdList)
         {
             idlist.Add(item.SysLibraryId.ToString());
         }
         if (!idlist.Contains(id))
         {
             return(false);
         }
         List <String> namelist = new List <string>();
         foreach (var item in LibraryIdList)
         {
             var LibraryList = db.SysLibrarys.Where(sl => sl.ID == item.SysLibraryId).Select(sl => new { sl.LibraryName }).AsNoTracking().ToList();
             foreach (var items in LibraryList)
             {
                 namelist.Add(items.LibraryName.ToString());
             }
         }
         if (!namelist.Contains(name))
         {
             return(false);
         }
         return(true);
     }
 }
Exemple #19
0
        /// <summary>
        /// 在请求授权时调用
        /// </summary>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            using (DataWallContext db = new DataWallContext())
            {
                if (httpContext == null)
                {
                    throw new ArgumentNullException("HttpContext");
                }
                if (AuthRoles == null || AuthRoles.Length == 0)
                {
                    return(false);
                }

                #region 确定当前用户角色是否属于指定的角色
                //获取当前登陆用户所在角色
                var        Cookies = SecurityHelper.DecryptDES(CookieHelper.GetCookieValue("User"), db.SysProgramInfos.AsNoTracking().FirstOrDefault().CookieSecretKey);
                UserCookie user    = JsonConvert.DeserializeObject <UserCookie>(Cookies);
                if (user != null)
                {
                    //验证用户是否被禁用
                    if (db.SysUsers.FirstOrDefault(u => u.UserName == user.UserName & u.IsEnable == 0 & u.DelState == 0) != null)
                    {
                        //验证是否属于对应角色
                        for (int i = 0; i < AuthRoles.Length; i++)
                        {
                            if (user.RoleName.Contains(AuthRoles[i]))
                            {
                                return(true);
                            }
                        }
                    }
                }
                #endregion
                return(false);
            }
        }
Exemple #20
0
 private static void Initialize()
 {
     try
     {
         if (HttpContext.Current != null)
         {
             // check user in cookie
             if (UserId == 0 || string.IsNullOrEmpty(UserName))
             {
                 UserId = UserCookie.IsValidEncryptedID() ? Convert.ToInt64(UserCookie.ToDecrypt()) : 0;
                 // intialize user value
                 dbPetSupplies_8517 DB = new Data.dbPetSupplies_8517();
                 User user             = DB.Users.Where(x => x.UserID == UserId).FirstOrDefault();
                 if (user != null)
                 {
                     UserId   = user.UserID;
                     UserName = user.Ownername ?? "";
                     IsAdmin  = user.IsAdmin;
                 }
             }
         }
     }
     catch { }
 }
Exemple #21
0
        /// <summary>
        /// Creates the authentication ticket.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="user">The user.</param>
        /// <returns>FormsAuthenticationTicket.</returns>
        public static FormsAuthenticationTicket CreateAuthenticationTicket(string name, UserCookie user)
        {
            var ticket = new FormsAuthenticationTicket(
                1,
                name,
                DateTime.Now,
                DateTime.Now.Add(FormsAuthentication.Timeout),
                false,
                user.ToJson());

            return(ticket);
        }
        /// <summary>
        /// 校验用户身份,并返回绑定Url
        /// </summary>
        /// <param name="appAccountId"></param>
        /// <param name="redirectUrl"></param>
        /// <param name="type"></param>
        /// <param name="cookie"></param>
        /// <returns>
        /// null:用户身份存在且状态正常
        /// 非null:返回绑定Url,直接跳转
        /// </returns>
        public string GetIdentityUrl(string appAccountId, string redirectUrl, int type, UserCookie cookie, CallbackContentState state = CallbackContentState.Bind)
        {
            ArgumentHelper.AssertIsTrue(!string.IsNullOrWhiteSpace(redirectUrl), "redirectUrl is null or empty");

            AppAccountInfo     appAccountPublic;
            AppAccountInfo     appAccountPrivate = null;
            var                tenantId          = 0;
            AppUserAccountInfo appUserAccountMaster;
            AppUserAccountInfo appUserAccount;
            string             appAccountPublicId;

            //根据类型初始化信息
            if (string.IsNullOrWhiteSpace(appAccountId))
            {
                //公共账户方式
                appAccountPublic     = ProviderGateway.AppAccountProvider.GetPublicByType(type);
                appUserAccountMaster = ProviderGateway.AppUserAccountProvider.GetByOpenId(appAccountPublic.AppId, cookie.OpenIds[appAccountPublic.AppId]);
                appAccountPublicId   = appAccountPublic.AppAccountId;

                if (appUserAccountMaster != null && appUserAccountMaster.State == AppUserAccountState.Activated)
                {
                    cookie.AccountAppId  = appAccountPublic.AppId;
                    cookie.AccountOpenId = cookie.OpenIds[appAccountPublic.AppId];
                    return(null);
                }
            }
            else
            {
                //私有账户方式
                appAccountPrivate = ProviderGateway.AppAccountProvider.Get(appAccountId);
                tenantId          = appAccountPrivate.TenantId;

                switch (appAccountPrivate.Type)
                {
                case 11:
                case 12:
                    appAccountPublic     = ProviderGateway.AppAccountProvider.GetPublicByType(appAccountPrivate.Type);
                    appUserAccountMaster = ProviderGateway.AppUserAccountProvider.GetByOpenId(appAccountPublic.AppId, cookie.OpenIds[appAccountPublic.AppId]);
                    appUserAccount       = ProviderGateway.AppUserAccountProvider.GetByOpenId(appAccountPrivate.AppId, cookie.OpenIds[appAccountPrivate.AppId]);
                    appAccountPublicId   = appAccountPublic.AppAccountId;

                    if (appUserAccountMaster == null)
                    {
                        if (appUserAccount != null)
                        {
                            //如果与其他账户冲突
                            var appUserAccoutTemp = ProviderGateway.AppUserAccountProvider.GetByUserId(appUserAccount.TenantId, appUserAccount.UserId, appAccountPublic.AppId);
                            if (appUserAccoutTemp == null)
                            {
                                //补充主账户
                                var appUserAccountMasterNew = new AppUserAccountInfo();
                                appUserAccountMasterNew.AppId           = appAccountPublic.AppId;
                                appUserAccountMasterNew.OpenId          = cookie.OpenIds[appAccountPublic.AppId];
                                appUserAccountMasterNew.TenantId        = appUserAccount.TenantId;
                                appUserAccountMasterNew.UserId          = appUserAccount.UserId;
                                appUserAccountMasterNew.BeisenAccount   = BeisenUserProxy.GetUserEmail(appUserAccount.UserId);
                                appUserAccountMasterNew.Type            = AppUserAccountType.Email;
                                appUserAccountMasterNew.State           = AppUserAccountState.Activated;
                                appUserAccountMasterNew.MasterAccountId = 0;
                                var appUserAccountMasterNewId = ProviderGateway.AppUserAccountProvider.AddOrUpdate(appUserAccountMasterNew.TenantId, appUserAccountMasterNew);
                                ProviderGateway.AppUserAccountProvider.UpdateMasterAccountId(appUserAccount.Id, appUserAccountMasterNewId);

                                cookie.AccountAppId  = appAccountPublic.AppId;
                                cookie.AccountOpenId = cookie.OpenIds[appAccountPublic.AppId];

                                return(null);
                            }
                        }
                    }
                    else if (appUserAccountMaster.State == AppUserAccountState.Activated)
                    {
                        if (appUserAccount == null)
                        {
                            //补充账户信息
                            var appUserAccountNew = new AppUserAccountInfo();
                            appUserAccountNew.AppId           = appAccountPrivate.AppId;
                            appUserAccountNew.OpenId          = cookie.OpenIds[appAccountPrivate.AppId];
                            appUserAccountNew.TenantId        = appUserAccountMaster.TenantId;
                            appUserAccountNew.UserId          = appUserAccountMaster.UserId;
                            appUserAccountNew.BeisenAccount   = appUserAccountMaster.BeisenAccount;
                            appUserAccountNew.Type            = appUserAccountMaster.Type;
                            appUserAccountNew.State           = appUserAccountMaster.State;
                            appUserAccountNew.MasterAccountId = appUserAccountMaster.Id;
                            ProviderGateway.AppUserAccountProvider.AddOrUpdate(appUserAccountNew.TenantId, appUserAccountNew);
                        }
                        else if (appUserAccount.MasterAccountId != appUserAccountMaster.Id)
                        {
                            //更新MasterId
                            ProviderGateway.AppUserAccountProvider.UpdateMasterAccountId(appUserAccount.Id, appUserAccountMaster.Id);
                        }
                        cookie.AccountAppId  = appAccountPublic.AppId;
                        cookie.AccountOpenId = cookie.OpenIds[appAccountPublic.AppId];
                        return(null);
                    }
                    break;

                default:
                    appUserAccountMaster = ProviderGateway.AppUserAccountProvider.GetByOpenId(appAccountPrivate.AppId, cookie.OpenIds[appAccountPrivate.AppId]);
                    appAccountPublicId   = appAccountPrivate.AppAccountId;
                    if (appUserAccountMaster != null && appUserAccountMaster.State == AppUserAccountState.Activated)
                    {
                        cookie.AccountAppId  = appAccountPrivate.AppId;
                        cookie.AccountOpenId = cookie.OpenIds[appAccountPrivate.AppId];
                        return(null);
                    }
                    break;
                }
            }
            //记录回调信息
            var batchId         = Guid.NewGuid().ToString();
            var callbackContent = new CallbackContentInfo
            {
                BatchId           = batchId,
                TenantId          = tenantId,
                AppAccountPublic  = appAccountPublicId,
                AppAccountPrivate = appAccountPrivate == null ? null : appAccountPrivate.AppAccountId,
                Content           = redirectUrl,
                State             = state
            };

            ProviderGateway.CallbackContentProvider.Add(callbackContent);

            if (state == CallbackContentState.Bind)
            {
                return(UrlHelper.AddParameter(HostConst.UserBind, "batch", batchId));
            }
            else
            {
                var parameter = redirectUrl.Split('?');
                var query     = parameter.Length > 0 ? string.Format("{0}&batch={1}", parameter[1], batchId) : string.Empty;
                return(UrlHelper.AddQuery(HostConst.RegisterBind, query));
            }
        }
Exemple #23
0
        public object Post([FromBody] LoginModel model)
        {
            if (IsAuthenticated)
            {
                return new { result = false }
            }
            ;

            if (BruteForceLock.IsBanned(HttpContext.Current.Request.UserHostAddress))
            {
                return new { result = false, attempts = 0 }
            }
            ;

            if (!ModelState.IsValid)
            {
                var errors = new List <string>();

                foreach (var value in ModelState.Values)
                {
                    foreach (var error in value.Errors)
                    {
                        errors.Add(error.ErrorMessage);
                    }
                }

                return(new { result = false, attempts = GetRemainingAttempts(), errors = errors });
            }

            var email         = model.Email.ToLower();
            var password_hash = model.Password.ToPasswordHash(email);

            var user = _database.Login(email, password_hash);

            if (user == null)
            {
                var ts = BruteForceLock.OnFailed(HttpContext.Current.Request.UserHostAddress);
                if (ts.HasValue)
                {
                    return(new
                    {
                        result = false,
                        attempts = 0,
                        banTime = (int)ts.Value.TotalSeconds
                    });
                }

                // username or password wrong
                return(new
                {
                    result = false,
                    attempts = GetRemainingAttempts()
                });
            }

            // set cookie etc...
            BruteForceLock.OnSuccess(HttpContext.Current.Request.UserHostAddress);

            var userCookie = UserCookie.Create(email);
            var expireDate = DateTime.UtcNow + UserCookieCache.CookieLifetime;

            var cookie = new HttpCookie(UserCookie.CookieName);

            cookie.Expires = expireDate;
            cookie.Value   = userCookie.SecureHash;
            if (!string.IsNullOrWhiteSpace(UserCookie.CookieDomain))
            {
                cookie.Domain = UserCookie.CookieDomain;
            }
            HttpContext.Current.Response.Cookies.Add(cookie);

            UserCookieCache.AddSession(userCookie.SecureHash, HttpContext.Current.Request.UserHostAddress, user.Id, expireDate);
            _database.AddUserLog(user.Id, "Logged in");

            return(new { result = true });
        }
    }
}
Exemple #24
0
        /// <summary>
        /// 记录当前用户信息和登录信息
        /// </summary>
        /// <param name="userAccount"></param>
        /// <param name="entity"></param>
        private static void RecordCurrentUserInfoAndLoginInfo(string userAccount, BusinessUser entity)
        {
            //在客户端写入登录信息
            if (EnvironmentHelper.IsWebApplicatonMode == true)
            {
                //0.记录用户Cookie1
                FormsAuthentication.SetAuthCookie(userAccount, false);

                //1.记录用户Cookie2
                UserCookie userCookie = new UserCookie();
                userCookie.UserGuid = entity.UserGuid;
                userCookie.UserID = entity.UserID;
                userCookie.UserName = entity.UserName;
                userCookie.UserType = entity.UserType;
                userCookie.Save();
            }
            else
            {
                CurrentUser = entity;
            }

            UpdateLastInfo(entity.UserGuid, ClientBrowser.GetClientIP(), DateTimeHelper.RunningLocalNow);
        }
        /// <summary>
        /// 获取开放平台授权URL
        /// </summary>
        /// <param name="appAccountId"></param>
        /// <param name="redirectUrl"></param>
        /// <param name="type">公共服务号类型。12:微信服务号,21:钉钉</param>
        /// <param name="cookie"></param>
        /// <returns></returns>
        public string GetAuthorizeUrl(string appAccountId, string redirectUrl, int type, UserCookie cookie, string loginType = null)
        {
            //Log 信息
            //  AppConnectLogHelper.ErrorFormat("进入GetAuthorizeUrl方法!appAccountId:{0},redirectUrl:{1},type:{2}", appAccountId, redirectUrl, type);
            ArgumentHelper.AssertIsTrue(!string.IsNullOrWhiteSpace(redirectUrl), "redirectUrl is null or empty");

            AppAccountInfo       appAccountPublic;
            AppAccountInfo       appAccountPrivate;
            AppAccountInfo       appAccountAuthorize;
            string               appAccountPublicId;
            string               appAccountPrivateId = null;
            CallbackContentState callbackState;
            var tenantId = 0;

            //根据类型初始化信息
            if (string.IsNullOrWhiteSpace(appAccountId))
            {
                //公共账户方式
                AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->公共账户方式!");
                appAccountPublic = ProviderGateway.AppAccountProvider.GetPublicByType(type);

                if (!string.IsNullOrWhiteSpace(CookieHelper.GetOpenId(cookie, appAccountPublic.AppId)))
                {
                    return(null);
                }

                appAccountPublicId  = appAccountPublic.AppAccountId;
                callbackState       = CallbackContentState.Public;
                appAccountAuthorize = appAccountPublic;
            }
            else
            {
                //私有账户类型
                AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!");
                appAccountPrivate = ProviderGateway.AppAccountProvider.Get(appAccountId);
                if (appAccountPrivate == null)
                {
                    AppConnectLogHelper.Error("AppAccountProvider-GetByAppAccountId 为 null");
                    return(null);
                }
                appAccountPrivateId = appAccountPrivate.AppAccountId;
                tenantId            = appAccountPrivate.TenantId;

                switch (appAccountPrivate.Type)
                {
                case 11:
                case 12:
                    AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->Case11,12");
                    appAccountPublic   = ProviderGateway.AppAccountProvider.GetPublicByType(appAccountPrivate.Type);
                    appAccountPublicId = appAccountPublic.AppAccountId;

                    if (!string.IsNullOrWhiteSpace(CookieHelper.GetOpenId(cookie, appAccountPublic.AppId)) && !string.IsNullOrWhiteSpace(CookieHelper.GetOpenId(cookie, appAccountPrivate.AppId)))
                    {
                        return(null);
                    }

                    if (!string.IsNullOrWhiteSpace(CookieHelper.GetOpenId(cookie, appAccountPublic.AppId)))
                    {
                        callbackState       = CallbackContentState.Private;
                        appAccountAuthorize = appAccountPrivate;
                    }
                    else if (!string.IsNullOrWhiteSpace(CookieHelper.GetOpenId(cookie, appAccountPrivate.AppId)))
                    {
                        callbackState       = CallbackContentState.Public;
                        appAccountAuthorize = appAccountPublic;
                    }
                    else
                    {
                        callbackState       = CallbackContentState.PrivateAndPublic;
                        appAccountAuthorize = appAccountPublic;
                    }
                    break;

                default:
                    AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->CaseDefault");
                    if (string.IsNullOrWhiteSpace(CookieHelper.GetOpenId(cookie, appAccountPrivate.AppId)))
                    {
                        callbackState       = CallbackContentState.Private;
                        appAccountAuthorize = appAccountPrivate;
                        appAccountPublicId  = appAccountPrivate.AppAccountId;
                    }
                    else
                    {
                        AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->CaseDefault->Cookie有值返回Null");
                        return(null);
                    }
                    break;
                }
            }
            AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->Case->记录回调信息");
            //记录回调信息
            var batchId         = Guid.NewGuid().ToString();
            var callbackContent = new CallbackContentInfo
            {
                BatchId           = batchId,
                TenantId          = tenantId,
                AppAccountPublic  = appAccountPublicId,
                AppAccountPrivate = appAccountPrivateId,
                Content           = redirectUrl,
                State             = callbackState
            };

            ProviderGateway.CallbackContentProvider.Add(callbackContent);

            var state = Guid.NewGuid().ToString("N");

            AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->Case->记录回调信息->记录Cookie");
            try
            {
                AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->Case->记录回调信息->记录Cookie前->State:" + state);

                CookieHelper.SetState(state);
                var getCookieState = CookieHelper.GetState();
                AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->Case->记录回调信息->记录Cookie后获取->State:" + getCookieState);
            }
            catch (System.Exception ex)
            {
                AppConnectLogHelper.Debug("SetState加日志发生了错误!!!!!");
            }

            //生成授权Url
            var extend = new Dictionary <string, string>
            {
                { TemplateConst.ExtendState, state },
                { TemplateConst.ExtendBatch, batchId }
            };

            string url = null;

            //钉钉的PC登录
            if (!string.IsNullOrEmpty(loginType) && loginType == "0")
            {
                var requestTemplate = new DefaultApiTemplate(appAccountAuthorize, TemplateConst.AuthorizePCUrl, extend);
                url = requestTemplate.GetRequestUrl();
            }
            else
            {
                var requestTemplate = new DefaultApiTemplate(appAccountAuthorize, TemplateConst.AuthorizeUrl, extend);
                url = requestTemplate.GetRequestUrl();
            }
            AppConnectLogHelper.Debug("进入GetAuthorizeUrl方法->私有账户方式!->Case->记录回调信息->记录Cookie后获取->State->Url" + url);
            return(url);
        }
Exemple #26
0
        /// <summary>
        /// AuthorizeCore返回false时执行
        /// </summary>
        /// <param name="filterContext"></param>
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            using (DataWallContext db = new DataWallContext())
            {
                var Cookies = SecurityHelper.DecryptDES(CookieHelper.GetCookieValue("User"), db.SysProgramInfos.AsNoTracking().FirstOrDefault().CookieSecretKey);
                base.HandleUnauthorizedRequest(filterContext);
                if (Cookies.Length != 0)
                {
                    UserCookie user = JsonConvert.DeserializeObject <UserCookie>(Cookies);
                    //验证用户是否被禁用或删除
                    if (db.SysUsers.FirstOrDefault(u => u.IsEnable == 0 & u.DelState == 0 & u.UserName == user.UserName) != null)
                    {
                        if (filterContext != null)
                        {
                            filterContext.Result = new JsonResult
                            {
                                Data = new { code = "401", msg = "您没有权限进行该操作!" },
                                JsonRequestBehavior = JsonRequestBehavior.AllowGet
                            };
                        }
                    }
                    else
                    {
                        if (filterContext.HttpContext.Request.IsAjaxRequest())
                        {
                            filterContext.Result = new JsonResult
                            {
                                Data = new { code = "402", msg = "登录超时,请重新登录!", url = "/Admin/Login" },
                                JsonRequestBehavior = JsonRequestBehavior.AllowGet
                            };
                        }
                        else
                        {
                            //跳转至登录超时页面
                            filterContext.Result = new RedirectResult("/Error/ErrorLoginTimeout");
                            //当前访问页面:filterContext.HttpContext.Request.Url
                            //filterContext.HttpContext.Response.Redirect("/Admin/Login");
                        }
                    }
                }
                else
                {
                    if (filterContext.HttpContext.Request.IsAjaxRequest())
                    {
                        filterContext.Result = new JsonResult

                        {
                            Data = new { code = "402", msg = "登录超时,请重新登录!", url = "/Admin/Login" },
                            JsonRequestBehavior = JsonRequestBehavior.AllowGet
                        };
                    }
                    else
                    {
                        //跳转至登录超时页面
                        filterContext.Result = new RedirectResult("/Error/ErrorLoginTimeout");
                        //当前访问页面:filterContext.HttpContext.Request.Url
                        //filterContext.HttpContext.Response.Redirect("/Admin/Login");
                    }
                }
            }
        }
Exemple #27
0
        void Init()
        {
            _IniPath = AppDomain.CurrentDomain.BaseDirectory + "idpe.ini";
            if (File.Exists(_IniPath))
            {
                StreamReader sr          = new StreamReader(_IniPath);
                string       fileContent = sr.ReadToEnd();
                sr.Close();
                _UserCookie = new UserCookie(fileContent);
                foreach (string user in _UserCookie.UserNames)
                {
                    cbUserName.Items.Add(user);
                }
                cbUserName.Text = _UserCookie.UserName;
                cbSdfs.Text     = _UserCookie.SdfName;
            }
            else
            {
                _UserCookie = new UserCookie();
            }

            lblVersion.Text = "Version - " + AssemblyVersion;

            if (EyediaCoreConfigurationSection.CurrentConfig.AuthenticationType == AuthenticationTypes.ActiveDirectory)
            {
                pnlLoginBox.Visible = false;
                Authenticator authenticator = new Authenticator(EyediaCoreConfigurationSection.CurrentConfig.AuthenticationType);
                Information.LoggedInUser = authenticator.Authenticate();
                if (authenticator.IsAuthenticated)
                {
                    timerLoad.Enabled = true;
                }
                else
                {
                    ShowMessage("Unauthorized: Active directory authentication failed. Please contact administrator for further information.", true);
                    timerExit.Enabled = true;
                    return;
                }
            }
            else if (EyediaCoreConfigurationSection.CurrentConfig.AuthenticationType == AuthenticationTypes.ActiveDirectoryGroup)
            {
                pnlLoginBox.Visible = false;
                Authenticator authenticator = new Authenticator(EyediaCoreConfigurationSection.CurrentConfig.AuthenticationType);
                Information.LoggedInUser = authenticator.Authenticate(EyediaCoreConfigurationSection.CurrentConfig.AuthorizedGroups);
                if (authenticator.IsAuthenticated)
                {
                    timerLoad.Enabled = true;
                }
                else
                {
                    ShowMessage("Unauthorized: Seems like you do not belong to correct AD group(s). Please contact administrator for further information.", true);
                    timerExit.Enabled = true;
                    return;
                }
            }
            else
            {
                List <string> sdfFiles = new List <string>(Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.sdf"));
                foreach (string dbFile in sdfFiles)
                {
                    cbSdfs.Items.Add(Path.GetFileName(dbFile));
                }

                if (cbSdfs.Items.Count > 1)
                {
                    label3.Visible             = true;
                    cbSdfs.Visible             = true;
                    IgnoreDataBaseChangedEvent = true;
                    cbSdfs.Text = _UserCookie.SdfName;
                    IgnoreDataBaseChangedEvent = false;

                    if (cbSdfs.SelectedIndex == -1)
                    {
                        if (cbSdfs.Items.Count == 1)
                        {
                            cbSdfs.SelectedIndex = 0;
                        }
                        else if (cbSdfs.Items.Count > 0)
                        {
                            cbSdfs.Select();
                            return;
                        }
                    }
                }
                else
                {
                    label3.Visible = false;
                    cbSdfs.Visible = false;
                }
            }
        }