using Microsoft.AspNetCore.Authorization;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
namespace Admin.Core.Extensions
{
///
/// 必要参数类,类似一个订单信息
/// 继承 IAuthorizationRequirement,用于设计自定义权限处理器PermissionHandler
/// 因为AuthorizationHandler 中的泛型参数 TRequirement 必须继承 IAuthorizationRequirement
///
public class PermissionRequirement : IAuthorizationRequirement
{
///
/// 用户权限集合,一个订单包含了很多详情,
/// 同理,一个网站的认证发行中,也有很多权限详情(这里是Role和URL的关系)
///
public List Permissions { get; set; }
///
/// 无权限action
///
public string DeniedAction { get; set; }
///
/// 认证授权类型
///
public string ClaimType { internal get; set; }
///
/// 请求路径
///
public string LoginPath { get; set; } = "/Api/Login";
///
/// 发行人
///
public string Issuer { get; set; }
///
/// 订阅人
///
public string Audience { get; set; }
///
/// 过期时间
///
public TimeSpan Expiration { get; set; }
///
/// 签名验证
///
public SigningCredentials SigningCredentials { get; set; }
///
/// 构造
///
/// 拒约请求的url
/// 权限集合
/// 声明类型
/// 发行人
/// 订阅人
/// 签名验证实体
/// 过期时间
public PermissionRequirement(string deniedAction, List permissions, string claimType, string issuer, string audience, SigningCredentials signingCredentials, TimeSpan expiration)
{
ClaimType = claimType;
DeniedAction = deniedAction;
Permissions = permissions;
Issuer = issuer;
Audience = audience;
Expiration = expiration;
SigningCredentials = signingCredentials;
}
}
}