アクションメソッドでこれを指定するのではなく、ある種のフィルタによってこれを達成できますか?
もちろん。カスタム認証属性を書くことができます:
public class AuthorizeBlogPostOwnerAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var authorized = base.AuthorizeCore(httpContext);
if (!authorized)
{
return false;
}
var user = httpContext.User;
var rd = httpContext.Request.RequestContext.RouteData;
var id = rd.Values["postid"] as string;
if (string.IsNullOrEmpty(id))
{
return false;
}
return IsOwnerOfBlogPost(user.Identity.Name, id);
}
private bool IsOwnerOfPost(string username, string postId)
{
// hit your dabatase here and validate if the current user
// is owner of the blog post
throw new NotImplementedException();
}
}
コントローラー アクションを装飾するために使用できます。
[AuthorizeBlogPostOwner]
public ActionResult SomeAction(string postId)
{
... if we got that far it means that the current user is owner of the blog post
}