我正在使用servicestack。 我想根据API中的路由以不同方式对用户进行身份验证。 例如: 如果用户正在访问公司路线:/ api / company(POST)(更新公司数据)我想使用存储在超级管理员帐户中的主密钥(例如)。 但是,如果用户正在访问一些简单的数据,说员工部门,那么该员工的身份验证,路由:/ api / employees / 74274762764 / departments(GET)
因此,如果我使用凭证验证(继承和实施),我该怎么做呢。
我是否检测到路径并编写逻辑?这将是非常脆弱的。 从理论上讲,我想指定服务的属性并提供所需的身份验证。如下所示:
[CorporateAuthentication]或[UserAuthentication],因此身份验证逻辑可以确定用户的验证位置。
请帮忙。
由于
阿米特
答案 0 :(得分:1)
通常,当您拥有具有不同可访问级别的资源时,实际上并不希望以不同方式进行身份验证,而是希望受认证用户附加的不同角色或权限保护的资源。
有一个如何使用ServiceStack的Authentication and authorization wiki page:
的示例[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 Answer详细介绍了角色和权限在ServiceStack中的工作原理。