0

フォルダーを取得するには、次の方法があります。

    [HttpGet]
    [Authorize]
    public HttpResponseMessage GetFolder(int id)
    {
        FolderDto folder = _service.GetFolder(id);
        if (folder == null)
        {
            return Request.CreateResponse(HttpStatusCode.NotFound);
        }

        return Request.CreateResponse(HttpStatusCode.Found, folder);
    }

承認が機能しています。ユーザーがログインし、有効な Cookie を使用してリクエストを渡すと、アクションが続行されます。しかし、ユーザーが自分のフォルダー、つまり、メンバーシップテーブルに自分のユーザー ID の UserId を持つフォルダーを取得できるようにしたいだけです。

WebAPIコントローラーメソッドのすべてに対してコントローラーでこのチェックを実行する必要がありますか、それともまだ学んでいない標準的なアプローチがあるかどうか。私の腸は私にこれをするように言います:

    [HttpGet]
    [Authorize]
    public HttpResponseMessage GetFolder(int id)
    {
        FolderDto folder = _service.GetFolder(id);
        if (folder == null || folder.UserId != <userId>) // Or just add another check for HTTPUnauthorized
        {
            return Request.CreateResponse(HttpStatusCode.NotFound);
        }

        return Request.CreateResponse(HttpStatusCode.Found, folder);
    }

考え?

4

1 に答える 1

0

アクションの 1 つだけの実行中にこの承認を実行する必要がある場合は、そのコードをそのアクション コードに挿入するだけです。ただし、複数のアクションがある場合はAuthorizeAttribute、そのフィルターでフォルダー認証のコードを拡張および移動することで、おそらく認証フィルターを作成します。

于 2013-04-21T10:16:59.800 に答える