WebAPI.QuickNet 1.1.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package WebAPI.QuickNet --version 1.1.3                
NuGet\Install-Package WebAPI.QuickNet -Version 1.1.3                
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.3" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add WebAPI.QuickNet --version 1.1.3                
#r "nuget: WebAPI.QuickNet, 1.1.3"                
#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.3

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


var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
try
{
    var builder = WebApplication.CreateBuilder(args);
    builder.InjectRun(options =>
        {
            //配置JWT验证
            options.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.GetTokenIssueTime(); 
                        //返回false则代表当前令牌为失效状态(即便token尚在有效期内,您可以自行更改此处的逻辑,比如通过缓存是否存在的方式判断等。)
                        return issueTime > DateTime.Now.AddMinutes(-5);
                    }
                },
                //自定义JWT验证成功处理
                OnTokenValidated = (c) =>
                {
                    logger.Info($"{c.Scheme.Name} JWT token authentication succeeded!");
                },
                //自定义JWT验证失败处理
                OnChallenge = (c) =>
                {
                    logger.Error($"{c.Scheme.Name} JWT token validation failed!");
                },
               
            };
            
            //限流配置
            options.ThrottleOptions = new QuickThrottleOptions
            {
                //redis配置
                RedisOption = new QuickThrottleRedisOption
                {
                    Host = "localhost",
                    Port = 6379,
                    Password = "3333",
                    Database = 0, 
                },
                //redis key前缀
                KeyPrefix = "QuickNet", 
                
                //获取用户唯一标识,用于限流,只有 Policy.UserIdentity 才会生效
                OnUserIdentity = (httpContext) =>
                {
                    var loginProfile = httpContext.LoginProfile<UserInfo>();
                    return loginProfile?.UserId.ToString();
                }, 
            }; 
            //自定义异常类型,继承该类型的异常将会被直接返回给客户端
            options.BaseCustomErrorType = typeof(AbsCustomError);
        },
        (services) =>
        {
            //注入你的自定义服务
            // services.AddTransient<IYouCustomerServer, YouCustomerServer>();
        },
        app =>
        {
            //注册控制器 
            app.Urls.Add("https://0.0.0.0:7086");
            app.Urls.Add("http://0.0.0.0:5259");
        }
    );
}
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.