ASP.NETCoreMVC,Identity,自定义策略-自定义授权策略的问题。
创始人
2024-09-18 03:30:24
0
  1. 自定义策略:

首先,需要在 Startup.cs 文件的 ConfigureServices() 方法中添加自定义策略。

services.AddAuthorization(options => { options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin")); });

上面的例子中,添加了一个名为“AdminOnly”的策略,它要求用户具有“Admin”角色才能访问受保护的资源。

  1. 自定义授权:

在自定义授权类中,需要实现 AuthorizationHandler 接口,其中 TRequirement 是自定义要求类型的名称。

public class AdminRequirement : IAuthorizationRequirement {}

public class AdminHandler : AuthorizationHandler { protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AdminRequirement requirement) { if (context.User.HasClaim(c => c.Type == "IsAdmin" && c.Value == "true")) { context.Succeed(requirement); }

    return Task.CompletedTask;
}

}

在上面的例子中,定义了一个名为“AdminRequirement”的类,并在 AdminHandler 类中实现了 HandleRequirementAsync() 方法。该方法通过检查用户是否具有名为“IsAdmin”的声明,并且其值为“true”,来决定用户是否满足自定义要求。

  1. 应用策略:

可以通过调用 AuthorizeAttribute 的 Policy 属性,在控制器或操作方法上应用已定义的策略。

[Authorize(Policy = "AdminOnly")] public IActionResult AdminPanel() { return View(); }

上述示例中,AdminPanel 操作方法只允许具有“AdminOnly”策略的用户访问。

注意:还需要在 ConfigureServices() 方法中注册自定义要求。

services.AddTransient();

相关内容

热门资讯

玩家科普!四川游戏家园有插件吗... 玩家科普!四川游戏家园有插件吗(辅助挂)的确是真的有挂(有挂神器)-哔哩哔哩1、每一步都需要思考,不...
科技通报!wepoke有挂吗网... 1、科技通报!wepoke有挂吗网上!果真是真的有挂((2024已更新))(哔哩哔哩)2、进入游戏-...
1分钟实锤!德扑之星作弊(辅助... 您好,德扑之星这款游戏可以开挂的,确实是有挂的,需要了解加微【439369440】很多玩家在这款游戏...
透视真的!微信小程序雀神麻将设... 大家肯定在之前微信小程序雀神麻将设置才赢或者微信小程序雀神麻将设置才赢中玩过透视真的!微信小程序雀神...
总算明白!阿当福建麻将技巧(辅... 1、总算明白!阿当福建麻将技巧(辅助挂)确实是真的有挂(有挂功能)-哔哩哔哩;详细教程。2、阿当福建...
透视线上!微扑克有保险吗!果真... 透视线上!微扑克有保险吗!果真是真的有挂((2024已更新))(哔哩哔哩);人气非常高,ai更新快且...
盘点几款!七彩云南游戏辅助器(... 盘点几款!七彩云南游戏辅助器(辅助挂)原来真的有挂(真是有挂)-哔哩哔哩;科技详细教程小薇《7574...
八分钟科普!wepower辅助... 八分钟科普!wepower辅助软件(辅助挂)透视辅助((2020已更新))(哔哩哔哩)1、每个玩家都...
记者揭秘!福来互动熟人有挂不(... 记者揭秘!福来互动熟人有挂不(辅助挂)果真是真的有挂(有挂规律)-哔哩哔哩准备好在福来互动熟人有挂不...
透视ai!德州poker外挂!... 透视ai!德州poker外挂!的确是真的有挂((2023已更新))(哔哩哔哩)相信很多朋友都在电脑上...