ASP.NET标识和创建RoleFunctions



选择"个人用户帐户"时,我使用的是MVC6 Core 1.0附带的最新、最棒的Identity 3.x。

我的用户身份验证要求如下:

Users -> AspNetUsers  
Roles -> AspNetRoles  
UserRoles -> AspNetUserRoles   
RoleFunctions -> I don't see a table for this in the Identity db structure

RoleFunctions是任何类型的系统功能,如DeleteCustomers、AccessToCustomerPage等。

我假设ASP.NET Identity不支持基于角色的身份验证的这一额外步骤,因此我将不得不自己创建表和相关函数。这是真的吗?还是这一切都在我身边,而我只是没有看到?

Identity允许您根据控制器或控制器中的特定操作来确定授权。

[Authorize]
public void controllermethod(param) {}

authorize将需要身份验证,然后才能访问此操作或控制器。

因此,如果你想创建一个只有管理员才能执行的操作(或你创建的任何用户角色组),你可以在控制器方法之上放置

[Authorize(Roles="admin")]
public void controllerMethod(param) {}

角色可以接受字符串列表,如(Roles="Admin"、"Manager"),因此您可以在单个授权声明中放置多个角色。

您也可以在控制器级别执行此操作,强制控制器中的每个操作都遵守您的授权声明。基本上,如果你把它放在控制器声明之上,每个动作都会受到影响,但你可以用将特定动作列入白名单

[AllowAnonymous]
public void nosecuritycontrolleraction {}

我希望这就是你想要的,你可以在这里找到更好的指南:http://www.asp.net/identity

更新1对于DeleteCustomer示例,我假设您在控制器中有一些方法来处理客户对象的删除。在这些方法之上,放入[Authorize(Roles="CustomerAdmin")],然后只有在UserRoles中具有CustomerAdmin角色的用户才能使用该操作。

类似:

[Authorize(Roles="CustomerAdmin")]
public ActionResult DeleteCustomer(string/int id){}

相关内容

  • 没有找到相关文章

最新更新