public void ConfigureServices(IServiceCollection services)
{
// 添加身份验证服务
services.AddAuthorizationCore();
services.AddScoped<AuthenticationStateProvider, ServerAuthenticationStateProvider>();
}
using BlazorDemo.Shared;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Authorization;
using System.Net.Http;
using System.Security.Claims;
using System.Threading.Tasks;
namespace BlazorDemo.Client
{
public class SelfAuthenticationStateProvider : AuthenticationStateProvider
{
private readonly HttpClient _httpClient;
public SelfAuthenticationStateProvider(HttpClient httpClient)
{
_httpClient = httpClient;
}
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
{
var userInfo = await _httpClient.GetJsonAsync<UserInfo>("user");
var identity = userInfo.IsAuthenticated
? new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, userInfo.Name) }, "selfauth")
: new ClaimsIdentity();
return new AuthenticationState(new ClaimsPrincipal(identity));
}
}
}