asp.net - 有没有办法在 ASP.NET Core 的一个地方定义访问策略,类似于 Spring 安全的 antmatcher
问题描述
在 Spring Security 中,您可以在一个地方定义要授权的端点,例如
http.authorizeRequests()
.antMatchers("/login").permitAll()
.antMatchers("/admin/**").access("hasRole('ADMIN')")
.antMatchers("/**").denyAll();
在 .NET 中,我可以通过添加带有 RequireAuthenticatedUser 的 AuthorizationPolicy 来创建默认拒绝策略:
services.AddControllersWithViews(o =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
o.Filters.Add(new AuthorizeFilter(policy));
o.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().AddRequirements(new endpoint))
});
有没有办法在 .NET 中以与 Spring Security 中类似的方式定义我想要和不授权的路径,即在一个地方全部定义?
解决方案
如果您需要禁用特定 url 的授权,例如登录页面,您可以[AllowAnonymous]
在相应的操作上添加属性。
[Authorize]
public class AccountController : Controller
{
[AllowAnonymous]
public ActionResult Login()
{
}
public ActionResult Logout()
{
}
}
看看这个参考。
推荐阅读
- symfony - 带有 DataTables Omines 捆绑包的错误 Symfony 4
- python - 难以使用合并功能
- java - 从另一个启动一个 springboot 应用程序
- java - 正则表达式如何匹配字符串中不重复的子字符串?
- elixir - 匿名函数意外输出
- bash - 检查状态代码和内容的 wget 响应
- in-app-billing - 如何从 Google Play Billing 获取购买状态?
- android - 无法解析配置“:app:_internal_aapt2_binary”的所有文件
- android - bottomsheetdialog 中页面底部的额外边距
- swift - 如何修复“动态”属性“IpfSetId”也必须是“@objc”?