2

我正在使用服务堆栈。我想根据 API 中的路由对用户进行不同的身份验证。例如:如果用户正在访问公司路由:/api/company (POST)(更新公司数据)我想使用存储在超级管理员帐户中的主密钥(例如)。但是如果用户正在访问一些琐碎的数据,比如员工部门,那么该员工的身份验证,Route: /api/employees/74274762764/departments (GET)

那么,如果我使用凭据身份验证(继承和实现),我该怎么做。

我是否检测路径并编写逻辑?那将是非常脆弱的。从理论上讲,我想在服务上指定属性并提供所需的身份验证。所以像:

[CorporateAuthentication] 或 [UserAuthentication] 以便身份验证逻辑可以确定在哪里验证用户。

请帮忙。

谢谢

阿米特

4

1 回答 1

1

通常,当您拥有具有不同可访问性级别的资源时,您实际上并不想以不同的方式进行身份验证,而是希望资源受到附加在经过身份验证的用户上的不同角色或权限的保护。

有一个如何使用 ServiceStack 的身份验证和授权 wiki 页面的示例:

[Authenticate]
//All HTTP (GET, POST...) methods need "CanAccess"
[RequiredRole("Admin")]
[RequiredPermission("CanAccess")]
[RequiredPermission(ApplyTo.Put | ApplyTo.Post, "CanAdd")]
[RequiredPermission(ApplyTo.Delete, "AdminRights", "CanDelete")]
public class Secured
{
    public bool Test { get; set; }
} 

这个较早的StackOverflow 答案详细介绍了角色和权限在ServiceStack中的工作方式。

于 2012-11-03T18:09:03.533 回答