Пример #1
0
        public HttpResponseMessage Login(AppUserLoginRequest appUserLoginRequest)
        {
            LoginResult result = appUserService.Login(appUserLoginRequest);

            if (result != null && result.Id.HasValue)
            {
                // log in success

                // this sets the cookie
                authService.LogIn(new UserBase
                {
                    // userId = User.Identity.GetId().Value;

                    Id       = result.Id.Value,
                    TenantId = result.TenantId.Value,
                    Name     = "",
                    Roles    = new string[0]
                });

                return(Request.CreateResponse(HttpStatusCode.OK, new ItemResponse <LoginResult>
                {
                    Item = result
                }));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse("Invalid username or password")));
            }
        }
Пример #2
0
        public async Task <JsonResult> Login(LoginViewModel account)
        {
            var service = new AppUserService();

            var model = new LoginViewModel();

            await TryUpdateModelAsync(model);

            if (!ModelState.IsValid)
            {
                List <string> errorMsg = new List <string>();
                foreach (var key in ModelState.Keys)
                {
                    var errors = ModelState[key].Errors.ToList();
                    foreach (var error in errors)
                    {
                        errorMsg.Add(error.ErrorMessage);
                    }
                }
                return(Json(ResultUtil.AuthFail(string.Join(";", errorMsg))));
            }

            if (account.VerifyCode.ToLower() != HttpContext.Session.GetString("LoginValidateCode").ToLower())
            {
                return(Json(ResultUtil.AuthFail("验证码错误")));
            }

            var user = service.Login(model.Name.Trim(), model.Pw.Trim());

            if (user.Code != 200)
            {
                return(Json(ResultUtil.AuthFail(user.Message)));
            }
            else
            {
                ClaimsIdentity identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
                identity.AddClaim(new Claim(ClaimTypes.Name, user.Body.Name));
                identity.AddClaim(new Claim(ClaimTypes.Role, user.Body.Role));
                identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Body.Id.ToString()));

                ClaimsPrincipal principal = new ClaimsPrincipal(identity);
                await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);

                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties
                {
                    IsPersistent = true,
                    ExpiresUtc   = DateTime.Today.AddDays(7),
                    RedirectUri  = "/Login"
                });

                HttpContext.Session.Set <AppUser>("User", new AppUser {
                    Id = user.Body.Id, Name = user.Body.Name, Role = user.Body.Role
                });
                return(Json(new Result {
                    Code = 200, Message = ""
                }));
            }
        }
Пример #3
0
        public async Task <ActionResult <UserDto> > Login(LoginDto loginDto)
        {
            var appUser = await _appUserService.Login(loginDto);

            if (appUser == null)
            {
                return(BadRequest("Invalid username or password"));
            }

            return(new UserDto
            {
                Username = appUser.UserName,
                Token = _tokenService.CreateToken(appUser)
            });
        }