当前您所在的位置:首页>新闻中心>新品发布
新品发布
行业动态
营销活动

Telerik :如何在ASP.NET Core中创建自定义AuthorizeAttribute?

发布时间:2021/04/30 浏览量:2669

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

{

// ...

}

具有AdminModerator角色的用户将有权访问AdminController中的操作。

AdminModerator”字符串解决错字的好方法,因此让我们将角色名称移动到一组字符串常量中:

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

 

{

 

// ...

 

}

 

 

 

北京哲想软件有限公司