Esempio n. 1
0
        /// <summary>
        /// 获取当前用户
        /// </summary>
        /// <returns></returns>
        public static UserModel GetCurrentUser()
        {
            var cookies = HttpContext.Current.Request.Cookies;

            // 获取cookie
            var cookie = cookies.Get(FormsAuthentication.FormsCookieName);

            if (cookie == null)
            {
                return(null);
            }

            // 解析ticket数据
            var ticket = FormsAuthentication.Decrypt(cookie.Value);

            LoginTicketDataModel userData = null;

            try
            {
                userData = JsonConvert.DeserializeObject <LoginTicketDataModel>(ticket.UserData);
            }
            catch (Exception ex)
            {
                var log = LogHelper.GetLogger(typeof(UserHelper));
                log.Error("User ticket deserialized failed.", ex);
                return(null);
            }

            return(GetUser(userData.UserID));
        }
Esempio n. 2
0
        public JsonResult Login(LoginModel model)
        {
            if (model.Username == null || string.IsNullOrEmpty(model.Username))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "Username is not allowed to be empty.",
                }));
            }

            if (model.Password == null || string.IsNullOrEmpty(model.Password))
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "Password is not allowed to be empty.",
                }));
            }

            // 获取Salt
            var helper = new MongoHelper();
            var filter = Builders <BsonDocument> .Filter.Eq("Username", model.Username);

            var user = helper.FindOne(Constant.UserCollectionName, filter);

            if (user == null)
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "The username or password is wrong.",
                }));
            }

            var salt = user["Salt"].ToString();

            // 验证账号密码
            var password = MD5Helper.Encrypt(model.Password + salt);

            var filter1 = Builders <BsonDocument> .Filter.Eq("Password", password);

            filter = Builders <BsonDocument> .Filter.And(filter, filter1);

            user = helper.FindOne(Constant.UserCollectionName, filter);
            if (user == null)
            {
                return(Json(new
                {
                    Code = 300,
                    Msg = "The username or password is wrong.",
                }));
            }

            var id = user["ID"].ToString();

            // 票据数据
            var ticketData = new LoginTicketDataModel
            {
                UserID = id,
            };

            // 将用户信息写入cookie
            var cookie = FormsAuthentication.GetAuthCookie(model.Username, false);
            var ticket = FormsAuthentication.Decrypt(cookie.Value);

            var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, JsonConvert.SerializeObject(ticketData)); // 将用户ID写入ticket

            cookie.Value   = FormsAuthentication.Encrypt(newTicket);
            cookie.Expires = DateTime.Now.AddMinutes(ConfigHelper.Expires);
            HttpContext.Current.Response.Cookies.Add(cookie);

            return(Json(new
            {
                Code = 200,
                Msg = "Login successfully!",
                Data = new
                {
                    Username = user["Username"].ToString(),
                    Name = user["Name"].ToString()
                }
            }));
        }
Esempio n. 3
0
        public static UserModel GetCurrentUser()
        {
            var cookies = HttpContext.Current.Request.Cookies;

            // 获取cookie
            var cookie = cookies.Get(FormsAuthentication.FormsCookieName);

            if (cookie == null)
            {
                return(null);
            }

            // 解析ticket数据
            var ticket = FormsAuthentication.Decrypt(cookie.Value);

            LoginTicketDataModel userData = null;

            try
            {
                userData = JsonConvert.DeserializeObject <LoginTicketDataModel>(ticket.UserData);
            }
            catch (Exception ex)
            {
                var log = LogHelper.GetLogger(typeof(UserHelper));
                log.Error("User ticket deserialized failed.", ex);
                return(null);
            }

            // 获取用户信息
            ObjectId objectId;

            if (!ObjectId.TryParse(userData.UserID, out objectId))
            {
                var log = LogHelper.GetLogger(typeof(UserHelper));
                log.Error("UserID parse failed.");
                return(null);
            }

            var mongo  = new MongoHelper();
            var filter = Builders <BsonDocument> .Filter.Eq("ID", objectId);

            var doc = mongo.FindOne(Constant.UserCollectionName, filter);

            if (doc == null)
            {
                return(null);
            }

            return(new UserModel
            {
                ID = doc["ID"].ToString(),
                Username = doc["Username"].ToString(),
                Name = doc["Name"].ToString(),
                Password = doc["Password"].ToString(),
                Gender = doc["Gender"].ToInt32(),
                Phone = doc["Phone"].ToString(),
                Email = doc["Email"].ToString(),
                QQ = doc["QQ"].ToString(),
                CreateTime = doc["CreateTime"].ToLocalTime(),
                UpdateTime = doc["UpdateTime"].ToLocalTime(),
                Salt = doc["Salt"].ToString(),
                Status = doc["Status"].ToInt32()
            });
        }
Esempio n. 4
0
        /// <summary>
        /// 获取当前用户
        /// </summary>
        /// <returns></returns>
        public static UserModel GetCurrentUser()
        {
            var cookies = HttpContext.Current.Request.Cookies;

            // 获取cookie
            var cookie = cookies.Get(FormsAuthentication.FormsCookieName);

            if (cookie == null)
            {
                return(null);
            }

            // 解析ticket数据
            var ticket = FormsAuthentication.Decrypt(cookie.Value);

            LoginTicketDataModel userData = null;

            try
            {
                userData = JsonConvert.DeserializeObject <LoginTicketDataModel>(ticket.UserData);
            }
            catch (Exception ex)
            {
                var log = LogHelper.GetLogger(typeof(UserHelper));
                log.Error("User ticket deserialized failed.", ex);
                return(null);
            }

            // 获取用户信息
            ObjectId objectId;

            if (!ObjectId.TryParse(userData.UserID, out objectId))
            {
                var log = LogHelper.GetLogger(typeof(UserHelper));
                log.Error("UserID parse failed.");
                return(null);
            }

            var mongo  = new MongoHelper();
            var filter = Builders <BsonDocument> .Filter.Eq("ID", objectId);

            var doc = mongo.FindOne(Constant.UserCollectionName, filter);

            if (doc == null)
            {
                return(null);
            }

            // 获取角色和权限信息
            var roleID               = "";
            var roleName             = "";
            var operatingAuthorities = new List <String>();

            if (doc.Contains("RoleID") && ObjectId.TryParse(doc["RoleID"].ToString(), out objectId))
            {
                filter = Builders <BsonDocument> .Filter.Eq("ID", objectId);

                var role = mongo.FindOne(Constant.RoleCollectionName, filter);

                if (role != null)
                {
                    roleID   = role["ID"].ToString();
                    roleName = role["Name"].ToString();

                    filter = Builders <BsonDocument> .Filter.Eq("RoleID", roleID);

                    var authorities = mongo.FindMany(Constant.OperatingAuthorityCollectionName, filter).ToList();

                    foreach (var authority in authorities)
                    {
                        operatingAuthorities.Add(authority["AuthorityID"].ToString());
                    }
                }
            }

            return(new UserModel
            {
                ID = doc["ID"].ToString(),
                Username = doc["Username"].ToString(),
                Name = doc["Name"].ToString(),
                Password = doc["Password"].ToString(),
                RoleID = roleID,
                RoleName = roleName,
                OperatingAuthorities = operatingAuthorities,
                Gender = doc["Gender"].ToInt32(),
                Phone = doc["Phone"].ToString(),
                Email = doc["Email"].ToString(),
                QQ = doc["QQ"].ToString(),
                CreateTime = doc["CreateTime"].ToLocalTime(),
                UpdateTime = doc["UpdateTime"].ToLocalTime(),
                Salt = doc["Salt"].ToString(),
                Status = doc["Status"].ToInt32(),
            });
        }