0

选择“个人用户帐户”时,我使用的是 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 不支持使用基于角色的身份验证的这个额外步骤,因此我将不得不自己创建涉及的表和函数。这是真的还是对我来说一切都在那里而我只是没有看到它?

4

1 回答 1

0

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

[Authorize]
public void controllermethod(param) {}

在可以访问此操作或控制器之前,授权将需要身份验证。

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

[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){}
于 2016-04-15T15:41:31.050 回答