コード例 #1
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
            var userManager = context.OwinContext.GetUserManager <ApplicationUserManager>();

            var loginVM = new LoginAC();

            loginVM.Email    = context.UserName.Trim().ToLower();
            loginVM.Password = context.Password.Trim();

            AccountRepository _accountRepository = new AccountRepository();
            var currentUser = await Task.Run(() => { return(_accountRepository.ValidateUserAsync(loginVM)); });

            if (currentUser.StatusCode == (int)EnumList.ResponseType.Success)
            {
                UserTokenAC userData = (UserTokenAC)currentUser.Data;
                var         identity = new ClaimsIdentity(context.Options.AuthenticationType);
                identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userData.Id.ToString()));
                identity.AddClaim(new Claim("FullName", userData.FullName));
                identity.AddClaim(new Claim("Email", userData.Email));

                AuthenticationProperties properties = CreateProperties(userData.Id.ToString(),
                                                                       userData.FullName, userData.Email);
                AuthenticationTicket ticket = new AuthenticationTicket(identity, properties);
                context.Validated(ticket);
            }
            else
            {
                context.SetError("invalid_grant", currentUser.Message);
            }
        }
コード例 #2
0
        public async Task <BaseResponseModel> ValidateUserAsync(LoginAC loginAC)
        {
            BaseResponseModel baseResponseModel = new BaseResponseModel();
            UserTokenAC       userTokenAC       = new UserTokenAC();

            using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
            {
                try
                {
                    var existingUserQuery = "select * from AspNetUsers where Email='" + loginAC.Email + "'";
                    var userData          = connection.Query(existingUserQuery).FirstOrDefault();
                    if (userData != null)
                    {
                        if (PasswordHashUtill.VerifyHashedPassword(userData.PasswordHash, loginAC.Password))
                        {
                            userTokenAC.Id       = userData.Id;
                            userTokenAC.FullName = userData.UserName;
                            userTokenAC.Email    = userData.Email;

                            baseResponseModel.StatusCode = (int)EnumList.ResponseType.Success;
                            baseResponseModel.Data       = userTokenAC;
                        }
                        else
                        {
                            baseResponseModel.Message    = StringConstant.InvalidPassword;
                            baseResponseModel.StatusCode = (int)EnumList.ResponseType.Error;
                            baseResponseModel.Data       = null;
                        }
                    }
                    else
                    {
                        baseResponseModel.Message    = StringConstant.LoginCredentailWrong;
                        baseResponseModel.StatusCode = (int)EnumList.ResponseType.Error;
                        baseResponseModel.Data       = null;
                    }
                    return(baseResponseModel);
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
        }