xir*_*ird 26 c# asp.net-core-mvc asp.net-core
在ASP.NET MVC 4及更低版本中,我们只需在Global.asax中添加以下内容:
GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" });
Run Code Online (Sandbox Code Playgroud)
知道如何在ASP.NET Core MVC中执行此操作吗?
tmg*_*tmg 48
来自docs:
您可以通过将过滤器添加到类中方法的
MvcOptions.Filters集合中 来全局注册过滤器(适用于所有控制器和操作):ConfigureServicesStartup
您不能添加AuthorizeAttribute到MvcOptions.Filters.创建AuthorizationPolicy并使用AuthorizeFilter:
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireRole("Admin", "SuperUser")
.Build();
services.AddMvc(options =>
{
options.Filters.Add(new AuthorizeFilter(policy));
});
Run Code Online (Sandbox Code Playgroud)
您也可以使用以下代码。这是使用类型而不是实例。
services.AddMvc(options =>
{
options.Filters.Add(typeof(AuthorizeFilter));
});
Run Code Online (Sandbox Code Playgroud)
使用依赖注入,您可以解析策略对象。
如果您使用ASP.NET Core 2.0的Razor Page风格,您可以添加全局过滤器,如下所示:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeFolder("/"); // Require users to be authenticated.
options.Conventions.AuthorizeFolder("/", "YourPolicyName"); // Require a policy to be full filled globally.
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15520 次 |
| 最近记录: |