1

ブログに投稿を作成したユーザーだけがブログを削除または編集できるようにするにはどうすればよいですか?

つまり、ユーザーはブログ投稿を作成し、で編集できます/post/edit/{ID}。ユーザーが自分に属していない投稿のIDを他の別の値に変更した場合はどうなりますか?

彼が編集する投稿が彼だけのものであることを確認するにはどうすればよいですか?

4

1 に答える 1

2

Authorizeデータベースにクエリを実行して、現在接続しているユーザーが、変更しようとしているブログ投稿の作成者であることを確認するカスタム属性を作成できます。

public class EnsureAuthorOfBlogAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var authorized = base.AuthorizeCore(httpContext);
        if (!authorized)
        {
            return false;
        }

        string blogId = httpContext.Request.RequestContext.RouteData.Values["id"] as string;
        string username = httpContext.User.Identity.Name;
        return IsBlogAuthor(username, blogId);
    }

    private bool IsBlogAuthor(string username, string blogId)
    {
        // TODO: you know what to do here
        throw new NotImplementedException();
    }
}

次に、コントローラーアクションを次のカスタム属性で装飾します。

[HttpDelete]
[EnsureAuthorOfBlog]
public ActionResult Delete(int id)
{
    ...
}

編集についても同じです。

[HttpPut]
[EnsureAuthorOfBlog]
public ActionResult Update(BlogViewModel blog)
{
    ...
}
于 2012-08-19T06:55:06.397 に答える