public override async Task <AuthenticationState> GetAuthenticationStateAsync() { var token = _store.GetAccount(); if (token != null) { var tokenValue = JwtCoder.DecodeToken(token.Token); foreach (var tokenValueClaim in tokenValue.Claims) { Console.WriteLine("Claims: " + tokenValueClaim.Type + ":" + tokenValueClaim.Value); } var claimsIdentity = new ClaimsIdentity(tokenValue.Claims, "bearer", ClaimTypes.NameIdentifier, ClaimTypes.Role); return(new AuthenticationState(new ClaimsPrincipal(claimsIdentity))); } return(new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity(new Claim[0], null)))); }
public async Task <ActionResult> Login([FromBody] LoginModel loginModel) { var passwordSignInAsync = await _signInManager.PasswordSignInAsync(loginModel.Username, loginModel.Password, true, false); if (passwordSignInAsync.Succeeded) { var result = new LoginResult(); var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenSettings.Value.Key)); var credentials = new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha256); //var user = _db.Query().Select.Table<AppUser>() // .Where // .Column(f => f.NormUsername).Is.EqualsTo(loginModel.Username.ToUpper()) // .FirstOrDefault(); var user = await _userStore.FindByNameAsync(loginModel.Username.ToUpper(), CancellationToken.None); var claims = new List <Claim>() { new Claim(ClaimTypes.NameIdentifier, user.AppUserId.ToString()), new Claim(ClaimTypes.Name, user.Username), new Claim(ClaimTypes.Role, user.AppRole.RoleName) }; var jwtToken = new JwtSecurityToken( issuer: _tokenSettings.Value.Issuer, audience: _tokenSettings.Value.Audience, expires: DateTime.Now.AddYears(200), signingCredentials: credentials, claims: claims ); string token = JwtCoder.EncodeToken(jwtToken); result.Token = token; return(Ok(result)); } return(Unauthorized()); }