.Net Core如何控制动态控制器上的授权策略

时间:2018-03-05 21:25:37

标签: c# asp.net-mvc authorization asp.net-core-mvc

.Net Core 2允许您创建动态控制器,如documentation

所示
public class GenericControllerFeatureProvider : IApplicationFeatureProvider<ControllerFeature>
{
    public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
    {
        foreach (var entityType in EntityTypes.Types)
        {
            var typeName = entityType.Name + "Controller";
            if (!feature.Controllers.Any(t => t.Name == typeName))
            {                
                var controllerType = typeof(GenericController<>)
                    .MakeGenericType(entityType.AsType())
                    .GetTypeInfo();
                feature.Controllers.Add(controllerType);
            }
        }
    }
}

在某些控制器上,您可以指定授权角色,如下所示:

[Authorize(Roles = "Administrator")]
public controller HomeController : Controller
{
}

使用通用控制器,您可能希望为每个实现指定不同的角色和策略。

如何为动态控制器上的授权指定不同的角色和策略?

0 个答案:

没有答案