Exemplo n.º 1
0
        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))));
        }
Exemplo n.º 2
0
        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());
        }