Authentication fix

This commit is contained in:
Adam 2024-05-23 10:06:57 +02:00
parent ae59dc8d15
commit 42dbf40f5a
3 changed files with 29 additions and 19 deletions

View File

@ -2,6 +2,7 @@
@using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Interfaces
@using AyCode.Interfaces.StorageHandlers @using AyCode.Interfaces.StorageHandlers
@using Microsoft.Extensions.Localization @using Microsoft.Extensions.Localization
@using Microsoft.AspNetCore.Components.Authorization
@ -99,7 +100,15 @@
</ul> </ul>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<AuthorizeView>
<Authorized>
<li class="nav-item">
<NavLink class="nav-link" href="login">
Test
</NavLink>
</li>
</Authorized>
</AuthorizeView>
@if(enableLogin) @if(enableLogin)
{ {
if (!myUser && enableLogin) if (!myUser && enableLogin)

View File

@ -93,7 +93,8 @@ namespace TIAMSharedUI.Shared.Components
serverResult = await UserDataService.Logout(userBasicDetail.RefreshToken); serverResult = await UserDataService.Logout(userBasicDetail.RefreshToken);
} }
await SecureStorageHandler.ClearAllSecureStorageAsync(); await SecureStorageHandler.ClearAllSecureStorageAsync();
await AuthStateProvider.GetAuthenticationStateAsync(); var result = await AuthStateProvider.GetAuthenticationStateAsync();
sessionService.User = null; sessionService.User = null;
sessionService.IsAuthenticated = false; sessionService.IsAuthenticated = false;
navigationManager.NavigateTo("/"); navigationManager.NavigateTo("/");

View File

@ -14,7 +14,6 @@ namespace TIAMWebApp.Shared.Application.Services
private readonly ISecureStorageHandler _localStorage; private readonly ISecureStorageHandler _localStorage;
private readonly HttpClient _http; private readonly HttpClient _http;
public CustomAuthStateProvider(ISecureStorageHandler localStorage, HttpClient http) public CustomAuthStateProvider(ISecureStorageHandler localStorage, HttpClient http)
{ {
@ -28,30 +27,31 @@ namespace TIAMWebApp.Shared.Application.Services
AuthenticationState state = null; AuthenticationState state = null;
if (!string.IsNullOrEmpty(userDetailsStr)) if (!string.IsNullOrEmpty(userDetailsStr))
{ {
var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
//var handler = new JwtSecurityTokenHandler(); var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
//var jsontoken = handler.ReadToken(userBasicDetail?.AccessToken) as JwtSecurityToken;
var token = userBasicDetail?.AccessToken;
var identity = new ClaimsIdentity();
_http.DefaultRequestHeaders.Authorization = null;
if (!string.IsNullOrEmpty(token)) //var handler = new JwtSecurityTokenHandler();
{ //var jsontoken = handler.ReadToken(userBasicDetail?.AccessToken) as JwtSecurityToken;
identity = new ClaimsIdentity(ParseClaimsFromJwt(token), "jwt"); var token = userBasicDetail?.AccessToken;
_http.DefaultRequestHeaders.Authorization = var identity = new ClaimsIdentity();
new AuthenticationHeaderValue("Bearer", token.Replace("\"", "")); _http.DefaultRequestHeaders.Authorization = null;
}
var user = new ClaimsPrincipal(identity); if (!string.IsNullOrEmpty(token))
state = new AuthenticationState(user); {
identity = new ClaimsIdentity(ParseClaimsFromJwt(token), "jwt");
_http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token.Replace("\"", ""));
}
NotifyAuthenticationStateChanged(Task.FromResult(state)); var user = new ClaimsPrincipal(identity);
state = new AuthenticationState(user);
NotifyAuthenticationStateChanged(Task.FromResult(state));
} }
else else
{ {
state = new AuthenticationState(new ClaimsPrincipal()); state = new AuthenticationState(new ClaimsPrincipal());
NotifyAuthenticationStateChanged(Task.FromResult(state));
} }
return state; return state;