亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

ASP.NET Core 中的授權策略如何自定義?

幻夢星雲(yún)
發(fā)布: 2025-10-16 14:16:02
原創(chuàng)
606人瀏覽過
自定義授權策略通過定義要求、處理程序并注冊策略實現(xiàn),如MinimumAgeRequirement與Handler結合Policy控制訪問。

asp.net core 中的授權策略如何自定義?

在 ASP.NET Core 中,自定義授權策略是通過組合策略名稱、要求(Requirements)、處理程序(Handlers)和策略注冊來實現(xiàn)的。你可以根據(jù)業(yè)務邏輯靈活控制訪問權限,比如基于用戶角色、聲明、資源狀態(tài)等條件進行判斷。

定義自定義授權要求

授權要求是一個繼承自 IAuthorizationRequirement 的類,用于表示某種權限條件。

public class MinimumAgeRequirement : IAuthorizationRequirement

{
????public int Age { get; }
????public MinimumAgeRequirement(int age)
????{
????????Age = age;
????}
}

編寫要求處理程序

處理程序負責驗證用戶是否滿足指定的要求。它需要實現(xiàn) AuthorizationHandler<T>,其中 T 是你的要求類型。

public class MinimumAgeHandler : AuthorizationHandler<MinimumAgeRequirement>

{
????protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
????????MinimumAgeRequirement requirement)
????{
????????// 檢查用戶是否有出生日期聲明
????????if (context.User.HasClaim(c => c.Type == ClaimTypes.DateOfBirth))
????????{
????????????var birthDate = DateTime.Parse(context.User.FindFirst(ClaimTypes.DateOfBirth).Value);
????????????int age = DateTime.Today.Year - birthDate.Year;
????????????if (birthDate > DateTime.Today.AddYears(-age)) age--;

        <br>            if (age >= requirement.Age)
        <br>            {
            <br>                context.Succeed(requirement); // 滿足條件
            <br>            }
        <br>        }

    <br>        return Task.CompletedTask;
    <br>    }
<br>}
登錄后復制

注冊策略和服務

Program.cs 或啟動配置中注冊授權服務,并添加自定義策略。

百度文心百中
百度文心百中

百度大模型語義搜索體驗中心

百度文心百中22
查看詳情 百度文心百中
builder.Services.AddAuthorization(options =>

{
????options.AddPolicy("AtLeast18", policy =>
????????policy.Requirements.Add(new MinimumAgeRequirement(18)));
});

builder.Services.AddScoped<IAuthorizationHandler, MinimumAgeHandler>();

在控制器中使用自定義策略

通過 [Authorize(Policy = "AtLeast18")] 應用策略。

[Authorize(Policy = "AtLeast18")]

public IActionResult AdultContent()
{
????return View();
}

基本上就這些。你還可以創(chuàng)建更復雜的策略,比如結合多個要求、基于資源的授權(Resource-based Authorization),或動態(tài)生成策略。關鍵是理解“要求 + 處理程序 + 策略名”這一模型。只要注冊正確,ASP.NET Core 會自動調(diào)用對應的處理邏輯。不復雜但容易忽略細節(jié),比如服務注冊順序或聲明格式。

以上就是ASP.NET Core 中的授權策略如何自定義?的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!

最佳 Windows 性能的頂級免費優(yōu)化軟件
最佳 Windows 性能的頂級免費優(yōu)化軟件

每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號