Beispiel #1
0
        private void SignInByIdentity(SysUser user, SysLoginTokenModel token)
        {
            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.Name, nameof(EB.ISCS)),
                new Claim(ClaimTypes.Actor, "pc"),
                new Claim(ClaimTypes.System, string.Empty), // appType
                new Claim(ClaimTypes.Authentication, token.Token),
                new Claim(ClaimTypes.UserData, Newtonsoft.Json.JsonConvert.SerializeObject(user))
            };

            HttpContext.Current.User = new ClaimsPrincipal(new ClaimsIdentity(claims));
        }
Beispiel #2
0
        public ResponseResult <CurrentUserModel> SignIn(LoginModel model)
        {
            try
            {
                if (ApiCacheDic.Get(ApiCacheDic.RedirectUri) == null)
                {
                    var u = Request.RequestUri.GetLeftPart(UriPartial.Authority);
                    ApiCacheDic.Add(ApiCacheDic.RedirectUri, u, DateTime.Now.AddYears(1));
                }

                LogHelper.WriteInfoLog("SignIn....");

                #region 参数验证

                if (string.IsNullOrEmpty(model.LoginName))
                {
                    return(ResponseResult <CurrentUserModel> .GenFaildResponse(ResultCode.UsernameIsNull));
                }
                if (string.IsNullOrEmpty(model.Password))
                {
                    return(ResponseResult <CurrentUserModel> .GenFaildResponse(ResultCode.PasswordIsNull));
                }
                #endregion

                HttpRequestBase request = Context.Request;

                ExploreHelper eh = new ExploreHelper(request);

                SysLoginLog logEntity = new SysLoginLog
                {
                    ClientIpAddress = eh.ClientIP,
                    ClientName      = eh.ClientMachineName,
                    Enabled         = 1,
                    LogDate         = DateTime.Now
                };
                //登录日志
                try
                {
                    logEntity.IPNum = (int)StringHelper.IPToInt(eh.ClientIP);
                }
                catch
                {
                    logEntity.IPNum = 0;
                }

                ResultCode code    = ResultCode.Success;
                var        service = GetService <SysUserService>();
                var        data    = service.Login(model.LoginName, model.Password);
                if (data != null)
                {
                    var token = new SysLoginTokenModel(data.UserDepId, data.Id)
                    {
                        UserId = data.Id
                    };

                    var services = GetService <SysLoginTokenService>();
                    services.Add(new SysLoginToken()
                    {
                        UserId          = data.Id,
                        CustomerUser    = data.UserType,
                        CustomerId      = data.UserCustomerId,
                        Token           = token.Token,
                        InDate          = token.InDate,
                        ExpriedTime     = token.ExpriedTime,
                        AccessChannelId = 0,
                    });

                    var currentUserModel = new CurrentUserModel
                    {
                        LoginName      = model.LoginName,
                        UserId         = data.Id,
                        UserIsFreeze   = data.UserIsFreeze ? 0 : 1,
                        UserIsManage   = data.UserIsManage,
                        UserName       = data.UserName,
                        UserPosition   = data.UserPosition,
                        UserCustomerId = data.UserCustomerId,
                        Token          = token.Token
                    };

                    logEntity.UserId   = currentUserModel.UserId;
                    logEntity.Token    = token.Token;
                    logEntity.UserName = currentUserModel.UserName;
                    logEntity.LogDate  = System.DateTime.Now;


                    if (data.DelState == 1 || data.DepDelState == 1 || data.CompanyDelState == 1)
                    {
                        code = ResultCode.UserDeleted;

                        logEntity.IsSucceed = 0;
                        logEntity.LogReason = "用户已被删除";

                        WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志
                    }
                    else if (data.Enabled == 0)
                    {
                        logEntity.IsSucceed = 0;
                        logEntity.LogReason = "用户已被冻结";

                        WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志
                    }
                    else
                    {
                        SignInByIdentity(data, token);
                        code = ResultCode.Success;
                        WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志
                    }
                    return(ResponseResult <CurrentUserModel> .GenSuccessResponse(currentUserModel));
                }
                else
                {
                    code = ResultCode.UserWrongPassword;
                    logEntity.InUserType = 1;
                    logEntity.IsSucceed  = 0;
                    logEntity.LogReason  = "用户不存在或者密码错误";
                    WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志
                    return(ResponseResult <CurrentUserModel> .GenFaildResponse(code));
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrorLog(HttpContext.Current.Request.RawUrl, ex);
                return(ResponseResult <CurrentUserModel> .GenSuccessResponse(ex.Message));
            }
        }