2

サービススタックを使用しています。API のルートに基づいて、異なる方法でユーザーを認証したいと考えています。例: ユーザーが会社のルートにアクセスしている場合: /api/company (POST) (会社データへの更新) スーパー管理者アカウントに保存されているマスター キーを使用したい (たとえば)。しかし、ユーザーが従業員部門などの些細なデータにアクセスしている場合、その従業員の認証ルート: /api/employees/74274762764/departments (GET)

Credentials Authentication (継承と実装) を使用している場合、どうすればよいでしょうか。

パスを検出してロジックを記述しますか? それは非常にもろくなります。理論的には、サービスの属性を指定し、必要な認証を提供したいと考えています。次のようなものです:

[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 Answerでは、 ServiceStackで Roles と Permissions がどのように機能するかについて詳しく説明しています。

于 2012-11-03T18:09:03.533 に答える