public override async Task <AuthenticationState> GetAuthenticationStateAsync() { SavedToken savedToken = await GetTokenAsync(); if (string.IsNullOrWhiteSpace(savedToken.SavedLR.AccessToken)) { firstTimeThrough = false; return(new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()))); } if (firstTimeThrough) { firstTimeThrough = false; await MarkUserAsAuthenticated(savedToken); } return(new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity(savedToken.Claims, "apiauth")))); }
private async Task MarkUserAsAuthenticated(SavedToken savedToken) { var authenticatedUser = new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, savedToken.SavedLR.UserId) }, "apiauth")); authenticatedUser.AddIdentity(new ClaimsIdentity(JwtParserHelper.ParseClaimsFromJwt(savedToken.SavedLR.AccessToken), "apiauth")); var authState = Task.FromResult(new AuthenticationState(authenticatedUser)); await _localStorage.SetItemAsync("authToken", savedToken.SavedLR.AccessToken); await _localStorage.SetItemAsync("refreshToken", savedToken.SavedLR.RefreshToken); await _localStorage.SetItemAsync("expireIn", savedToken.SavedLR.ExpiresIn); //await _jsRuntime.InvokeAsync<object>("RemoveUnusedParams"); await _jsRuntime.InvokeMethod("RemoveUnusedParams"); _genericRepository.SetResponse(savedToken.SavedLR); NotifyAuthenticationStateChanged(authState); }
//Public interface...no need for claims to be exposed public async Task MarkUserAsAuthenticated(LoginResponse lr) { SavedToken st = ParseToken(lr); await MarkUserAsAuthenticated(st); }