010-68421378
sales@cogitosoft.com
当前您所在的位置:首页>新闻中心>新品发布

如何在ASP.NET Core中创建自定义AuthorizeAttribute?这里有答案

发布时间:2021/03/28 浏览量:2123
Telerik UI for ASP.NET Core是用于跨平台响应式Web和云开发的最完整的UI工具集

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

 

 

 

{

 

 

 

// ...

 

 

 

}

 

 

 

下一篇:瑞星下一代防毒墙解决方案 :全新的对象配置管理功能
上一篇:我们如何利用Wolfram技术在混合远程学习环境中游刃有余?

                               

 京ICP备09015132号-996网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155

                                   © Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室

                         北京哲想软件集团旗下网站:哲想软件 | 哲想动画

                            华滋生物