Пример #1
0
        public IHttpActionResult Login(LoginInput login)
        {
            if (String.IsNullOrWhiteSpace(login.username) ||
                String.IsNullOrEmpty(login.username) ||
                String.IsNullOrWhiteSpace(login.password) ||
                String.IsNullOrEmpty(login.password))
            {
                return(BadRequest());
            }

            var user     = db.Users.Where(u => u.username.Equals(login.username) && u.password.Equals(login.password)).FirstOrDefault();
            var response = new LoginOutput();

            if (user != null)
            {
                response.code      = 200;
                response.message   = "success";
                response.firstname = user.firstname;
                response.lastname  = user.lastname;
                response.username  = user.username;
                response.token     = user.rowguid.ToString();

                return(Ok(response));
            }

            response.code    = 400;
            response.message = "User not found.";

            return(Content(HttpStatusCode.NotFound, response));
        }
Пример #2
0
        public string UserLogin([Service] IOptions <TokenSettings> tokenSettings, LoginInput login)
        {
            var currentUser = Users.Where(_ => _.Email.ToLower() == login.Email.ToLower() &&
                                          _.Password == login.Password).FirstOrDefault();

            if (currentUser != null)
            {
                var securitykey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tokenSettings.Value.Key));
                var credentials = new SigningCredentials(securitykey, SecurityAlgorithms.HmacSha256);

                var claims = new Claim[] {
                    new Claim(ClaimTypes.Role, "user"),
                    new Claim("usercountry", "Brazil")
                };

                var jwtToken = new JwtSecurityToken(
                    issuer: tokenSettings.Value.Issuer,
                    audience: tokenSettings.Value.Audience,
                    expires: DateTime.Now.AddMinutes(20),
                    signingCredentials: credentials,
                    claims: claims
                    );

                return(new JwtSecurityTokenHandler().WriteToken(jwtToken));
            }
            return("access denied!");
        }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <LoginOutput> Login(LoginInput input)
        {
            AbpLoginResult abpLoginResult = await _LoginManager.LoginAsync(input.Username, input.Password, input.TenantId ?? 0);

            if (abpLoginResult.Result == AbpLoginResultType.InvalidUserNameOrEmailAddress)
            {
                return(new LoginOutput()
                {
                    ErrorMessage = "无效的用户名", AbpLoginResult = abpLoginResult
                });
            }

            if (abpLoginResult.Result == AbpLoginResultType.InvalidPassword)
            {
                return(new LoginOutput()
                {
                    ErrorMessage = "无效的密码", AbpLoginResult = abpLoginResult
                });
            }

            return(new LoginOutput()
            {
                AbpLoginResult = abpLoginResult
            });
        }
Пример #4
0
        public IActionResult Login([FromBody] LoginInput LoginInput)
        {
            var user = _facade.EmployeeService.GetAll().FirstOrDefault(u => u.Username == LoginInput.Username);

            // check if username exists
            if (user == null)
            {
                return(Unauthorized());
            }

            // check if password is correct
            if (!VerifyPasswordHash(LoginInput.Password, user.PasswordHash, user.PasswordSalt))
            {
                return(Unauthorized());
            }

            // Authentication successful
            return(Ok(new
            {
                passwordreset = user.PasswordReset,
                id = user.Id,
                username = user.Username,
                isadmin = user.IsAdmin,
                token = GenerateToken(_employeeConverter.Convert(user)),
            }));
        }
        public async Task <ActionResult <LoginOutput> > Login([FromBody] LoginInput input)
        {
            var userToVerify = await CreateClaimsIdentityAsync(input.UserNameOrEmail, input.Password);

            if (userToVerify == null)
            {
                return(BadRequest(new List <NameValueDto>
                {
                    new NameValueDto("UserNameOrPasswordIncorrect", "The user name or password is incorrect!")
                }));
            }

            var token = new JwtSecurityToken
                        (
                issuer: _jwtTokenConfiguration.Issuer,
                audience: _jwtTokenConfiguration.Audience,
                claims: userToVerify.Claims,
                expires: _jwtTokenConfiguration.EndDate,
                notBefore: _jwtTokenConfiguration.StartDate,
                signingCredentials: _jwtTokenConfiguration.SigningCredentials
                        );

            return(Ok(new LoginOutput {
                Token = new JwtSecurityTokenHandler().WriteToken(token)
            }));
        }
Пример #6
0
        public LoginOutput Login(LoginInput input)
        {
            var user =
                _userRepository.Get(x =>
                                    (x.UserName == input.UserName || x.Phone == input.Mobile || x.Email == input.Email) &&
                                    x.Password == input.Password
                                    );

            if (user != null && user.Id > 0)
            {
                return(new LoginOutput()
                {
                    IsSuccess = true,
                    //ErrMessage = "指定的用户不存在"
                    UserId = user.Id,
                    UserName = user.UserName
                });
            }
            else
            {
                return(new LoginOutput()
                {
                    IsSuccess = false,
                    ErrMessage = "指定的用户不存在"
                });
            }
        }
Пример #7
0
        public async Task <LoginResults> Login(LoginInput input)
        {
            var result        = new Status();
            var returnResults = new LoginResults {
                status = new Status(), userDetail = new UserViewModel()
            };

            try
            {
                var password = Helpers.StringCipher.Encrypt(input.Password);
                var user     = _context.Users.Where(x => x.UserName == input.UserName && x.Password == password && !x.Deleted).FirstOrDefault();
                if (user != null)
                {
                    returnResults.userDetail = user.Adapt <UserViewModel>();
                    result = new Status {
                        StatusCode = 200, StatusDisplay = "Logged in Successfully", StatusValue = true
                    };
                }
                else
                {
                    result = new Status {
                        StatusCode = 198, StatusDisplay = "UserName and Password does not match", StatusValue = false
                    };
                }
            }
            catch (Exception ex)
            {
                result = new Status {
                    StatusCode = 500, StatusDisplay = ex.Message, StatusValue = false
                };
            }
            returnResults.status = result;
            return(returnResults);
        }
Пример #8
0
        public ApiResult <SessionOutput> PubLogin(LoginInput miniProgramLoginInput)
        {
            //var miniProgram = Service<IAutoConfigService>().GetValue<WeChatPaymentConfig>();
            //var loginUrl =
            //    $"/sns/oauth2/access_token?appid={miniProgram.AppId}&secret={miniProgram.AppSecret}&code={miniProgramLoginInput.JsCode}&grant_type=authorization_code";
            ////var loginUrl =
            ////    $"/sns/oauth2/access_token?appid=wx3845717402bcb006&secret=a977a30163b6c14516236a912842521b&code={miniProgramLoginInput.JsCode}&grant_type=authorization_code";
            //var url = BuildQueryUri(loginUrl);
            //var result = Connector.Get(url);

            ////如果请求错误,错误数据的格式示例:{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Hs2Q7a0732th50 ]"}
            //if (result.Contains("errmsg") && result.Contains("errcode")) {
            //    var errorMessage = result.DeserializeJson<MiniErrorMessage>();
            //    var apiResult = new ApiResult {
            //        Status = ResultStatus.Error,
            //        Message = errorMessage.Errmsg,
            //        MessageCode = errorMessage.Errcode.ConvertToInt()
            //    };
            //    Service<IUserService>().Log($"公众号登录失败,code:{miniProgramLoginInput.JsCode},原因:{apiResult.ToJson()}");
            //    return ApiResult.Failure<SessionOutput>(apiResult.ToJson());
            //}

            //var sessionOutput = result.DeserializeJson<SessionOutput>();
            ////Service<IUserService>().Log($"公众号登录成功,code:{miniProgramLoginInput.JsCode},openId:{sessionOutput.openid}");
            //return ApiResult.Success(sessionOutput);
            return(null);
        }
Пример #9
0
 public AdminHomePage LoginAsAdmin(string login, string password)
 {
     LoginInput.SetValue(login);
     PasswordInput.SetValue(password);
     LoginButton.Click();
     return(GoTo <AdminHomePage>());
 }
Пример #10
0
        internal async Task <bool> LoginAsync(GrpcChannel channel, string userName, string password)
        {
            var client = new Users.UsersClient(channel);
            var input  = new LoginInput
            {
                Email    = userName,
                Password = password
            };
            var result = await client.LoginRequsetAsync(input);

            if (result.Id == 0)
            {
                return(false);
            }

            LoggedInUser.Instance.Id            = result.Id;
            LoggedInUser.Instance.FirstName     = result.FirstName;
            LoggedInUser.Instance.LastName      = result.LastName;
            LoggedInUser.Instance.Email         = result.Email;
            LoggedInUser.Instance.DirectManager = result.DirectManager;

            if (result.Permission.Equals(System.Enum.GetName(typeof(PermissionsEnum), PermissionsEnum.Employee)))
            {
                LoggedInUser.Instance.Permission = PermissionsEnum.Employee;
            }
            else
            {
                LoggedInUser.Instance.Permission = PermissionsEnum.Manager;
            }

            return(true);
        }
Пример #11
0
        public UserOutput WebLogin(LoginInput requestDto)
        {
            Log.Error("Web login: {Username}/{Password}", requestDto.Username, requestDto.Password);
            User user = _userRepository.GetAll().FindField(x => x.Username.Equals(requestDto.Username));

            return(Login(user, requestDto.Password));
        }
Пример #12
0
        public async Task <Tokens> LoginAsync(LoginInput input)
        {
            _logger.LogInformation("Login With Jwt Begin;");

            var user = await _userRepository
                       .Where(x => x.UserName == input.UserName || x.Email == input.UserName)
                       .ToOneAsync();

            if (user == null)
            {
                throw new NpsException("用户不存在", StatusCode.NotFound);
            }

            bool valid = EncryptHelper.Md5By32(input.Password) == user.Password;

            if (!valid)
            {
                throw new NpsException("请输入正确密码", StatusCode.ParameterError);
            }

            _logger.LogInformation($"用户{input.UserName},登录成功");

            Tokens tokens = await CreateTokenAsync(user);

            return(tokens);
        }
Пример #13
0
        public virtual async Task UnbindAsync(LoginInput input)
        {
            await CheckUnbindPolicyAsync();

            var loginResult = await GetLoginResultAsync(input);

            using var tenantChange = CurrentTenant.Change(loginResult.MiniProgram.TenantId);

            await _identityOptions.SetAsync();

            if (await _identityUserManager.FindByLoginAsync(loginResult.LoginProvider, loginResult.ProviderKey) == null)
            {
                throw new WechatAccountHasNotBeenBoundException();
            }

            var identityUser = await _identityUserManager.GetByIdAsync(CurrentUser.GetId());

            (await _identityUserManager.RemoveLoginAsync(identityUser, loginResult.LoginProvider, loginResult.ProviderKey)).CheckErrors();

            await RemoveMiniProgramUserAsync(identityUser, loginResult.MiniProgram);

            if (!await _miniProgramUserRepository.AnyAsync(x => x.UserId == identityUser.Id))
            {
                await RemoveUserInfoAsync(identityUser);
            }
        }
        public IActionResult Post([FromBody] LoginInput input)
        {
            CheckStatus checkStatus = null;
            Usuario     perfil      = null;

            if (ModelState.IsValid)
            {
                try
                {
                    perfil = _repository.Single <Usuario>(p => p.Email == input.correo);

                    if (perfil.Password == input.contrasena)
                    {
                        return(BuildToken(input, perfil.Id));
                    }

                    else
                    {
                        checkStatus = new CheckStatus(Status.Error, "Contraseña Incorrecta");
                        return(StatusCode(404, checkStatus));
                    }
                }
                catch
                {
                    checkStatus = new CheckStatus(Status.Error, "Cuenta no registrada");
                    return(StatusCode(404, checkStatus));
                }
            }
            else
            {
                checkStatus = new CheckStatus(Status.Error, Mensaje.InputInvalido);
                return(StatusCode(422, checkStatus));
            }
        }
Пример #15
0
        public LoginOutput Login(LoginInput input)
        {
            var user = db.Users.FirstOrDefault(u => u.LoginName == input.loginname && u.PassWord == input.password);

            if (user == null)
            {
                return(null);
            }
            else
            {
                if (user.Status == 0)
                {
                    throw new UserFriendlyException("账号未启用");
                }
                else
                {
                    //记录日志
                    //记录IP,登录时间
                    user.LastLoginIP     = IPHelper.GetHostAddress();
                    user.LastLoginTime   = DateTime.Now;
                    db.Entry(user).State = EntityState.Modified;
                    db.SaveChanges();
                }
                return(user.MapTo <LoginOutput>());
            }
        }
        private IActionResult BuildToken(LoginInput infocuenta, int id)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.UniqueName, infocuenta.correo),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
            };
            var key        = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuracion["Llave_secreta"]));
            var creds      = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expiration = DateTime.UtcNow.AddHours(1);

            JwtSecurityToken token = new JwtSecurityToken(
                issuer: "yourdomain.com",
                audience: "yourdomain.com",
                claims: claims,
                expires: expiration,
                signingCredentials: creds
                );

            return(Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(token),
                expiration, id
            }));
        }
Пример #17
0
        public List <DailyRoutine.Core.Authorization.User.User> SearchUser(LoginInput input)
        {
            var context = new DailyRoutineDbContext();
            var users   = context.Users.Where(x => x.UserName.Contains(input.UserName) || x.Name.Contains(input.UserName) || x.Surname.Contains(input.UserName)).ToList();

            return(users);
        }
Пример #18
0
        // GET: Login/Details/5
        public ActionResult Login(LoginInput input)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(input));
            }

            var a = IUsers.GetUser(input.Email, input.Password);

            if (a != null)
            {
                if (Request.Cookies["UserId"] == null)
                {
                    Response.Cookies["UserId"].Value   = a.Id.ToString();
                    Response.Cookies["UserId"].Expires = DateTime.Now.AddMonths(1);
                }
                return(Json(new { url = "Test" }));
            }
            else
            {
                ViewBag.Message = "Email or Password is incorrect.";
                return(PartialView(new LoginInput {
                    Email = input.Email, Password = input.Password
                }));
            }
        }
Пример #19
0
        public IActionResult Login([FromBody] LoginInput model)
        {
            var user = repository.GetAll().FirstOrDefault(u => u.Username.ToLower().Equals(model.Username.ToLower()));

            // check if username exists
            if (user == null)
            {
                return(Unauthorized());
            }

            // check if password is correct
            if (!VerifyPasswordHash(model.Password, user.PasswordHash, user.PasswordSalt))
            {
                return(Unauthorized());
            }

            // Authentication successful
            return(Ok(new
            {
                id = user.Id,
                name = user.FirstName + " " + user.LastName,
                username = user.Username,
                token = GenerateToken(user)
            }));
        }
Пример #20
0
        public async Task <ActionResult> LoginAsync([FromBody] LoginInput loginInput)
        {
            try
            {
                var user = await userUsecase.GetAuthenticatedAsync(loginInput);

                if (user == null)
                {
                    return(Unauthorized());
                }

                var token = GenerateUserToken(user);
                return(Ok(token));
            }
            catch (InvalidInputException)
            {
                return(BadRequest());
            }
            catch (InvalidCredentialsException)
            {
                return(Unauthorized());
            }
            catch
            {
                return(BadRequest());
            }
        }
Пример #21
0
        public virtual async Task BindAsync(LoginInput input)
        {
            await CheckBindPolicyAsync();

            var loginResult = await GetLoginResultAsync(input);

            using var tenantChange = CurrentTenant.Change(loginResult.MiniProgram.TenantId);

            await _identityOptions.SetAsync();

            if (await _identityUserManager.FindByLoginAsync(loginResult.LoginProvider, loginResult.ProviderKey) != null)
            {
                throw new WechatAccountHasBeenBoundException();
            }

            var identityUser = await _identityUserManager.GetByIdAsync(CurrentUser.GetId());

            (await _identityUserManager.AddLoginAsync(identityUser,
                                                      new UserLoginInfo(loginResult.LoginProvider, loginResult.ProviderKey,
                                                                        WeChatManagementCommonConsts.WeChatUserLoginInfoDisplayName))).CheckErrors();

            await UpdateMiniProgramUserAsync(identityUser, loginResult.MiniProgram, loginResult.UnionId,
                                             loginResult.Code2SessionResponse.OpenId, loginResult.Code2SessionResponse.SessionKey);

            await UpdateUserInfoAsync(identityUser, input.UserInfo);
        }
Пример #22
0
        public Tuple <bool, UserInfoOutput> Login(LoginInput input)
        {
            var output = new UserInfoOutput();
            var tulpe  = new Tuple <bool, UserInfoOutput>(true, output);

            return(tulpe);
        }
Пример #23
0
        public virtual async Task <LoginOutput> LoginAsync(LoginInput input)
        {
            var loginResult = await GetLoginResultAsync(input);

            using var tenantChange = CurrentTenant.Change(loginResult.MiniProgram.TenantId);

            await _identityOptions.SetAsync();

            using (var uow = UnitOfWorkManager.Begin(new AbpUnitOfWorkOptions(true), true))
            {
                var identityUser =
                    await _identityUserManager.FindByLoginAsync(loginResult.LoginProvider, loginResult.ProviderKey) ??
                    await _miniProgramLoginNewUserCreator.CreateAsync(input.UserInfo, loginResult.LoginProvider,
                                                                      loginResult.ProviderKey);

                await UpdateMiniProgramUserAsync(identityUser, loginResult.MiniProgram, loginResult.UnionId,
                                                 loginResult.Code2SessionResponse.OpenId, loginResult.Code2SessionResponse.SessionKey);

                await UpdateUserInfoAsync(identityUser, input.UserInfo);

                await uow.CompleteAsync();
            }

            return(new LoginOutput
            {
                TenantId = loginResult.MiniProgram.TenantId,
                RawData = (await RequestIds4LoginAsync(input.AppId, loginResult.UnionId,
                                                       loginResult.Code2SessionResponse.OpenId))?.Raw
            });
        }
Пример #24
0
        public async Task <LoginResult> Login(LoginInput input)
        {
            LoginResult loginResult = null;

            try
            {
                loginResult = new LoginResult()
                {
                    ResultType = LoginResultType.Success,
                    PayLoad    = await _loginManager.Login(input.UserName, input.Password)
                };
            }
            catch (AuthException ex)
            {
                loginResult = new LoginResult()
                {
                    ResultType   = LoginResultType.Fail,
                    ErrorMessage = ex.GetExceptionMessage()
                };
            }
            catch (Exception ex)
            {
                loginResult = new LoginResult()
                {
                    ResultType   = LoginResultType.Error,
                    ErrorMessage = ex.GetExceptionMessage()
                };
            }

            return(loginResult);
        }
Пример #25
0
        public async Task Request_Tokens_Should_Get_AccessToken()
        {
            // Arrange
            var input = new LoginInput
            {
                AppId         = "AppId",
                Code          = "Code",
                EncryptedData = "EncryptedData",
                Iv            = "Iv",
                RawData       = "RawData",
                Signature     = "Signature",
                UserInfo      = new UserInfoModel
                {
                    NickName  = "NickName",
                    Gender    = 0,
                    Language  = "en",
                    City      = "City",
                    Province  = "Province",
                    Country   = "Country",
                    AvatarUrl = "https://image.com/img.jpg"
                }
            };

            // Act
            var result = await _loginAppService.LoginAsync(input);

            // Assert
            result.ShouldNotBeNull();
        }
Пример #26
0
        public static DataSet UserLogin(LoginInput loginO, string currAccDbName, string IPStr)
        {
            Dictionary <string, ParamObj> dic = new Dictionary <string, ParamObj>();
            ParamObj paraO1 = new ParamObj();

            paraO1.name  = "land_name";
            paraO1.size  = 40;
            paraO1.type  = SysDbType.VarChar;
            paraO1.value = loginO.username;
            ParamObj paraO2 = new ParamObj();

            paraO2.name  = "password";
            paraO2.size  = 40;
            paraO2.type  = SysDbType.VarChar;
            paraO2.value = loginO.pwd;
            ParamObj paraO3 = new ParamObj();

            paraO3.name  = "login_time";
            paraO3.type  = SysDbType.BigInt;
            paraO3.value = System.DateTime.Now.ToUniversalTime().Ticks;
            ParamObj paraO4 = new ParamObj();

            paraO4.name  = "computer_ip";
            paraO4.size  = 40;
            paraO4.type  = SysDbType.VarChar;
            paraO4.value = IPStr;
            ParamObj paraO5 = new ParamObj();

            paraO5.name  = "computer_name";
            paraO5.size  = 40;
            paraO5.type  = SysDbType.NVarChar;
            paraO5.value = loginO.ComputerName;
            ParamObj paraO6 = new ParamObj();

            paraO6.name  = "computer_mac";
            paraO6.size  = 40;
            paraO6.type  = SysDbType.VarChar;
            paraO6.value = loginO.MAC;
            ParamObj paraO7 = new ParamObj();

            paraO7.name  = "login_Id";
            paraO7.size  = 40;
            paraO7.type  = SysDbType.VarChar;
            paraO7.value = loginO.Login_Id;
            dic.Add("land_name", paraO1);
            dic.Add("password", paraO2);
            dic.Add("login_time", paraO3);
            dic.Add("computer_ip", paraO4);
            dic.Add("computer_name", paraO5);
            dic.Add("computer_mac", paraO6);
            dic.Add("login_Id", paraO7);
            SQLObj sqlObj = new SQLObj();

            sqlObj.cmdType   = System.Data.CommandType.StoredProcedure;
            sqlObj.sqlString = "ServerUserLogin";
            sqlObj.Param     = dic;
            DataSet ds = DBHelper.GetDataSet("服务器端用户登录", currAccDbName, sqlObj);

            return(ds);
        }
Пример #27
0
        public async Task <IActionResult> Login([FromBody] LoginInput reqData)
        {
            int resHttpStatusCode                    = 400;
            Dictionary <string, string> res          = new Dictionary <string, string>();
            Func <string, Task <bool> > authverifier = null;
            string authverifierToken                 = "";

            switch (reqData.provider)
            {
            case "GOOGLE":
                authverifier      = AuthToken.VerifyGoogleOauthV2Token;
                authverifierToken = reqData.idToken;
                break;

            case "FACEBOOK":
                authverifier      = AuthToken.VerifyFacebookOauthToken;
                authverifierToken = reqData.authToken;
                break;
            }
            if (authverifier != null && await authverifier(authverifierToken).ConfigureAwait(true))
            {
                int userSocialId = 0;
                using (var ctx = new ConclaveDbContext())
                {
                    var entity = from u in ctx.UserSocial where u.Email == reqData.email && u.Provider == reqData.provider select u;
                    if (entity.FirstOrDefault() != null)
                    {
                        userSocialId = entity.First().Id;
                    }
                    else
                    {
                        UserSocial user = new UserSocial()
                        {
                            Provider = reqData.provider,
                            Email    = reqData.email,
                            UserName = reqData.name
                        };
                        ctx.Add(user);
                        ctx.SaveChanges();
                        userSocialId = user.Id;
                    }
                }

                string accessToken  = AuthToken.GetNewAccessToken(userSocialId);
                string refreshToken = AuthToken.GetNewRefreshToken(userSocialId);
                res.Add("success", "true");
                res.Add("email", reqData.email);
                res.Add("accessToken", accessToken);
                res.Add("refreshToken", refreshToken);
                _cache.StringSet(accessToken, userSocialId.ToString());
                _cache.StringSet(refreshToken, userSocialId.ToString());
                resHttpStatusCode = 200;
            }
            else
            {
                res.Add("success", "false");
                res.Add("msg", "Invalid Token");
            }
            return(StatusCode(resHttpStatusCode, JsonConvert.SerializeObject(res)));
        }
Пример #28
0
        public void PubLogin_LoginInput_test()
        {
            LoginInput loginInput = null;
            var        result     = Resolve <MiniProgramService>().PubLogin(loginInput);

            Assert.NotNull(result);
        }
Пример #29
0
        public IActionResult Login([FromBody]LoginInput input)
        {
            //从数据库验证用户名,密码 
            //验证通过 否则 返回Unauthorized

            //创建claim
            var authClaims = new[] {
                new Claim(JwtRegisteredClaimNames.Sub,input.Username),
                new Claim(JwtRegisteredClaimNames.Jti,Guid.NewGuid().ToString())
            };
            IdentityModelEventSource.ShowPII = true;
            //签名秘钥 可以放到json文件中
            var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SecureKeySecureKeySecureKeySecureKeySecureKeySecureKey"));

            var token = new JwtSecurityToken(
                   issuer: "https://www.cnblogs.com/chengtian",
                   audience: "https://www.cnblogs.com/chengtian",
                   expires: DateTime.Now.AddHours(2),
                   claims: authClaims,
                   signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256)
                   );

            //返回token和过期时间
            return Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(token),
                expiration = token.ValidTo
            });
        }
Пример #30
0
        public async Task <ActionResult> Login(LoginInput input)
        {
            if (ModelState.IsValid)
            {
                var result = await signInManager.PasswordSignInAsync(input.Email, input.Password, true, lockoutOnFailure : true);

                if (result.Succeeded)
                {
                    var tokenHandler = new JwtSecurityTokenHandler();

                    var tokenDescriptor = new SecurityTokenDescriptor
                    {
                        Subject = new ClaimsIdentity(new Claim[] {
                            new Claim(ClaimTypes.Name, input.Email)
                        }),
                        Issuer             = configuration["JwtToken:Issuer"],
                        Audience           = configuration["JwtToken:Issuer"],
                        Expires            = DateTime.Now.AddDays(7),
                        SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtToken:SecretKey"])), SecurityAlgorithms.HmacSha512Signature),
                    };

                    var token = tokenHandler.CreateToken(tokenDescriptor);

                    return(Ok(new
                    {
                        token = tokenHandler.WriteToken(token),
                        expiration = token.ValidTo
                    }));
                }
            }

            return(BadRequest());
        }
Пример #31
0
        public ActionResult Login(LoginInput input, string returnUrl)
        {
            if (!ModelState.IsValid)
                return View("Login", input);

            var principalContext = MvcApplication.DomainConnections.FirstOrDefault(); // grab a dc connection

            if (principalContext == null) // not connected to any dcs
            {
                ModelState.AddModelError(string.Empty, "The login server is unavailable, please contact us if the problem persists.");
                return View("Login", input);
            }

            var user = UserPrincipal.FindByIdentity(
                principalContext, IdentityType.SamAccountName, input.Username);

            if (user == null) // not in active directory
            {
                ModelState.AddModelError(string.Empty, "Please enter a valid username and password.");
                return View("Login", input);
            }

            if (!user.Enabled.HasValue || !user.Enabled.Value) // account disabled
            {
                ModelState.AddModelError(string.Empty, "Your account is disabled.");
            }
            else
            {
                try
                {
                    if (principalContext.ValidateCredentials(input.Username, input.Password)) // logged in successfully
                    {
                        Log.Info(string.Format("Successful login for '{0}' by '{1}'.", input.Username, Request.UserHostAddress));
                        FormsAuthentication.SetAuthCookie(input.Username, true);

                        return RedirectFromLoginPage(returnUrl);
                    }
                    ModelState.AddModelError(string.Empty, "Please enter a valid username and password."); // failed
                }
                catch (LdapException ex)
                {
                    Log.Error(string.Format("Problem w/{0}, disposing connection '{0}'", principalContext.ConnectedServer), ex);
                    MvcApplication.DisposeConnection(principalContext);
                }
                catch (Exception ex)
                {
                    Log.Error("Unable to validate credentials", ex);
                    ModelState.AddModelError(string.Empty, "Unable to validate your credentials, please contact us if the problem persists.");
                }
            }
            Log.Warn(string.Format("Unsucessful login attempt to '{0}' by '{1}'.", input.Username, Request.UserHostAddress)); // always log if the account is valid

            return View("Login", input );
        }
Пример #32
0
		public ActionResult Index(LoginInput loginInput)
		{
            if (ModelState.IsValid)
            {
                var message = new LoginInputMessage {Input = loginInput, Result = new LoginResult()};

                MvcContrib.Bus.Send(message);

                if (message.Result.Success)
                {
                    FormsAuthentication.RedirectFromLoginPage(loginInput.Username, false);
                }

                ModelState.AddModelError("model", message.Result.Message);
            }
		    return View(loginInput);
		}
Пример #33
0
        public ActionResult Login(LoginInput input, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (Membership.ValidateUser(input.Username, input.Password))
                    {
                        FormsAuthentication.SetAuthCookie(input.Username, false);

                        return RedirectFromLoginPage(returnUrl);
                    }

                    ModelState.AddModelError(string.Empty, "Please provide a valid username and password.");
                }
                catch (Exception)
                {
                    ModelState.AddModelError(string.Empty, "An error occured while validating your credentials, please contact us if the problem persists.");
                }

            }
            return View(input);
        }