ASP.NET CORE[练习]-Identity-Assertion
程序员文章站
2023-12-28 14:51:22
...
练习+博客,量化自己的进步!
上一篇自定义了Policy,但又是自定义IAuthorizationRequriement又是AuhtorizationHandler,有点麻烦,其实net core有一个Assertion可以直接将三个Handler写一块。
services.AddAuthorization(options =>
{
// Admin是这条授权策略的名字,第二个参数是具体策略,RequireRole的参数类型是params string[]
//options.AddPolicy("Admin", policy => policy.RequireRole("Administrator"));
// 写法同Role差不多相同
//options.AddPolicy("Student", policy => policy.RequireClaim("EditStudent"));
// 添加Requirement,这个参数类型是params,可以添加多个Requriement
//options.AddPolicy("Defined", policy => policy.AddRequirements(new DefinedRequirement()));
options.AddPolicy("Assertion", policy => policy.RequireAssertion(context =>
{
if (context.User.Identity.Name.StartsWith("s"))
{
return true;
}
if (context.User.HasClaim(x=>x.Type == "EditStuent"))
{
return true;
}
if (context.User.IsInRole("Administrator"))
{
return true;
}
return false;
}));
});
各有利弊,根据实际项目情况选择使用。
推荐阅读
-
ASP.NET CORE[练习]-Identity-Assertion
-
Asp.net core Identity的配置
-
asp.net core 读取Appsettings.json 配置文件
-
c#,asp.net,asp.net MVC,asp.net Core 获取客户端IP
-
ASP.Net core 使用mailkit发送邮件
-
ASP.NET CORE发送邮件给多人
-
asp.net core实例教程之项目结构
-
Asp.Net Core 轻松学-HttpClient的演进和避坑
-
Asp.Net Core + SignalR 实现实时通信
-
Asp.Net Core 轻松学-基于微服务的后台任务调度管理器