WebAPI.QuickNet 1.1.6

dotnet add package WebAPI.QuickNet --version 1.1.6                
NuGet\Install-Package WebAPI.QuickNet -Version 1.1.6                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WebAPI.QuickNet" Version="1.1.6" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add WebAPI.QuickNet --version 1.1.6                
#r "nuget: WebAPI.QuickNet, 1.1.6"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install WebAPI.QuickNet as a Cake Addin
#addin nuget:?package=WebAPI.QuickNet&version=1.1.6

// Install WebAPI.QuickNet as a Cake Tool
#tool nuget:?package=WebAPI.QuickNet&version=1.1.6                
using Dnc.Api.Throttle;
using NLog;
using NLog.Web;
using WebAPI.QuickNet.Builder;
using WebAPI.QuickNet.Web.Core.Extends;
using WebAPI.QuickNet.Web.Core.Models;
using WebAPI.Test.Controllers;


var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
var quickOptions = new QuickOptions
{
    //配置JWT验证
    JwtOptions = new QuickJwtOptions
    {
        //JWT验证签发者
        ValidIssuer = "QuickNet",
        //JWT验证接收者
        ValidAudience = "QuickNet.Client",
        //JWT签名密钥
        IssuerSigningKey = "This is a signature string with a length of 256",
        //自定义单点登录验证
        SingleSignOnValidator = new SingleSignOnValidator()
        {
            ErrorMessage = "哦豁,你的账号在别的地方登录了哦",
            Validate = (ctx) =>
            {
                //获取令牌的签发时间
                var issueTime = ctx.GetValidateTokenIssueTime();
                //返回false则代表当前令牌为失效状态(即便token尚在有效期内,您可以自行更改此处的逻辑,比如通过缓存是否存在的方式判断等。)
                return issueTime != new DateTimeOffset(DateTime.Now).ToUnixTimeMilliseconds();
            }
        },
        //自定义JWT验证成功处理
        OnTokenValidated = (c) => { logger.Info($"{c.Scheme.Name} JWT token authentication succeeded!"); },
        //自定义JWT验证失败处理
        OnChallenge = (c) => { logger.Error($"{c.Scheme.Name} JWT token validation failed!"); },
    },

    //限流配置
    ThrottleOptions = new QuickThrottleOptions
    {
        //redis配置
        RedisOption = new QuickThrottleRedisOption
        {
            Host = "localhost",
            Port = 6379,
            Password = "",
            Database = 0,
        },
        //redis key前缀
        KeyPrefix = "QuickNet",

        //获取用户唯一标识,用于限流,只有 Policy.UserIdentity 才会生效
        OnUserIdentity = (httpContext) =>
        {
            var loginProfile = httpContext.LoginProfile<UserInfo>();
            return loginProfile?.UserId.ToString();
        },
    },
    //自定义异常类型,继承该类型的异常将会被直接返回给客户端
    BaseCustomErrorType = typeof(AbsCustomError)
};

try
{
    var builder = WebApplication.CreateBuilder(args);
    //构建
    var quickApp = new QuickWebBuilder(builder)
        .SetupQuickOptions(quickOptions)
        .AddFilters(filters => filters.Add<ApiThrottleActionFilter>())
        .AddServices()
        .Build();

    //启动
    quickApp.UsePipeline().Run();
    logger.Info("The program has been terminated normally!");
}
catch (Exception exception)
{
    logger.Error(exception, $"The program terminated abnormally...{exception.Message}");
    throw;
}
finally
{
    NLog.LogManager.Shutdown();
}
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.