Telerik UI for ASP.NET Core是用于跨平台响应式Web和云开发的最完整的UI工具集,拥有超过60个由Kendo UI支持的ASP.NET核心组件。它的响应式和自适应的HTML5网格,提供从过滤、排序数据到分页和分层数据分组等100多项高级功能。
在ASP.NET Core MVC中,使用AuthorizeAttribute类执行授权。 这是一个使用基于角色授权的简单示例:
[Authorize(Roles ="Admin,Moderator")]
public class AdminController : Controller
{
// ...
}
具有Admin或Moderator角色的用户将有权访问AdminController中的操作。
“Admin,Moderator”字符串解决错字的好方法,因此让我们将角色名称移动到一组字符串常量中:
public static class RoleConstants
{
public const string Admin ="Admin";
public const string Moderator ="Moderator";
// more roles
}
AdminController现在变为:
[Authorize(Roles=RoleConstants.Admin+","+RoleConstants.Moderator)]
public class AdminController : Controller
{
// ...
}
无法将插值字符串如$“ {RoleConstants.Admin},{RoleConstants.Moderator}”与属性一起使用。
这是一个很好的示例,其中扩展了AuthorizeAttribute类是有意义的。 由于我们试图简化在控制器或操作上调用基于角色的授权过程,因此创建一个自定义AuthorizeByRoleAttribute:
///
/// Specifies that the class or method thatthis attribute is applied to requires role-based authorization.
/// To authorize users with either role Aor role B, use:
///
/// [AuthorizeByRole("A","B")]
///
/// To only authorize users with both roleA and role B, use:
///
/// [AuthorizeByRole("A")]
/// [AuthorizeByRole("B")]
///
///
public class AuthorizeByRoleAttribute :AuthorizeAttribute
{
public MyAuthorizeAttribute(params string[]roles)
{
Roles = String.Join(",", roles);
}
}
可以如下来使用它:
[AuthorizeByRole(RoleConstants.Admin,RoleConstants.Moderator)]
public class AdminController : Controller
{
// ...
}
京ICP备09015132号-996 | 网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155
© Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室