/// <summary> /// 根据token获取用户认证信息 /// </summary> public async Task <IPKSPrincipal> GetPrincipalAsync(string token) { PKSPrincipal principal = null; if (token == PKSWebConsts.Token_Debug) { #if DEBUG principal = await GetDebugPrincipal(); principal.CreateTime = DateTime.Now; principal.ExpireTime = principal.CreateTime.AddDays(1); #endif } else { var userAuthSessionsRepository = GetService <IRepository <UserAuthSessions> >(); var userSession = await LoadSessionFromToken(userAuthSessionsRepository, token); if (userSession == null || !userSession.Valid) { return(null); } var userInfo = await GetUserInfo(userSession.UserName); if (userInfo == null) { return(null); } principal = BuildPrincipal(userInfo, userSession.AuthenticationType); principal.CreateTime = userSession.CreateTime; principal.ExpireTime = userSession.InvalidTime; } return(principal); }
/// <summary>从门户后台管理自动登录</summary> private bool AutoLogin(string returnUrl) { var token = this.Request.QueryString["token"]; if (token.IsNullOrEmpty()) { return(false); } var userId = this.Context.GetPortalMgmtUserId(token); if (userId.IsNullOrEmpty()) { return(false); } var nUserId = 0; if (!int.TryParse(userId, out nUserId)) { return(false); } var user = this.Context.GetPortalMgmtUser(nUserId); if (user == null) { return(false); } var admin = Users.GetUserInfo(user.USERNAME); var context = this.Context.GetHttpContextWrapper(); var config = GeneralConfigs.GetConfig(); if (admin == null) { var principal = new PKSPrincipal(); var identity = new PKSIdentity(); identity.Name = user.USERNAME; identity.Email = user.EMAIL; identity.PhoneNumber = user.PHONENUMBER; principal.Identity = identity; admin = context.CreateUser(config, principal, true); } else if (admin.Adminid != 1 || admin.Groupid != 1) { admin.Adminid = 1; admin.Groupid = 1; admin.Authtime = Utils.GetDateTime(); AdminUsers.UpdateUserAllInfo(admin); //移除该用户的在线信息,使之重建在线表信息 OnlineUsers.DeleteUserByUid(admin.Uid); } var adminGroup = AdminUserGroups.AdminGetUserGroupInfo(admin.Groupid); ForumUtils.WriteUserCookie(admin.Uid, ForumExtension.ExpireMinutes, config.Passwordkey); this.Context.AddAdminCookie(config, admin.Uid, admin.Password, admin.Secques, ForumExtension.ExpireMinutes); SoftInfo.LoadSoftInfo(); AdminVistLogs.InsertLog(admin.Uid, admin.Username, admin.Groupid, adminGroup.Grouptitle, DNTRequest.GetIP(), "后台管理员登陆", ""); return(true); }
/// <summary>调试用</summary> private async Task <PKSPrincipal> GetDebugPrincipal() { if (this.DebugPrincipal == null) { var userInfo = await GetUserInfo("admin"); this.DebugPrincipal = BuildPrincipal(userInfo, AuthenticationType.Forms.ToString()); } return(this.DebugPrincipal); }
/// <summary> /// 生成用户认证信息 /// </summary> private PKSPrincipal BuildPrincipal(VI_USERINFO userInfo, string authenticationType) { var principal = new PKSPrincipal { Roles = new[] { new PKSRole { Id = userInfo.ROLEID.ToString(), Name = userInfo.ROLENAME, Description = userInfo.ROLEDESC } }, Identity = new PKSIdentity { Id = userInfo.USERID.ToString(), Name = userInfo.USERNAME, AuthenticationType = authenticationType, IsAuthenticated = true } }; return(principal); }