.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
{
}
使用通用控制器,您可能希望为每个实现指定不同的角色和策略。
如何为动态控制器上的授权指定不同的角色和策略?