Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        /// <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);
        }