选择"个人用户帐户"时,我使用的是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){}