using System.Security.Claims;
namespace Avalonia_Services.Core
{
///
/// 鉴权服务抽象 —— 各宿主按自己的方式实现(JWT / Cookie / Token 等)。
///
public interface IAuthService
{
///
/// 验证请求并返回用户主体;返回 null 表示未授权。
///
Task AuthenticateAsync(ServiceEndpointContext context);
///
/// 检查当前用户是否有指定权限。
///
Task AuthorizeAsync(ClaimsPrincipal user, string policy);
}
///
/// 无需鉴权的默认实现(开发/公开 API 场景)。
///
public sealed class AnonymousAuthService : IAuthService
{
///
public Task AuthenticateAsync(ServiceEndpointContext context)
{
// 匿名用户,始终通过
var identity = new ClaimsIdentity("anonymous");
return Task.FromResult(new ClaimsPrincipal(identity));
}
///
public Task AuthorizeAsync(ClaimsPrincipal user, string policy)
{
return Task.FromResult(true);
}
}
}