Asp.net mvc 3 仅在特定参数上需要授权的控制器

Asp.net mvc 3 仅在特定参数上需要授权的控制器,asp.net-mvc-3,authorization,Asp.net Mvc 3,Authorization,我有一个控制器,它加载一篇文章并显示它。这篇文章有一个属性,可以显示它是私有的还是公有的 如果文章是私有的,我希望用户在显示文章之前登录 我不能简单地在这个动作上加上[Authorize]属性,因为如果文章是公开的,就不需要授权来显示它 最干燥的方法是什么 我希望依赖默认授权模型的内置功能(如果不需要,我不想手动编写重定向和传递参数) 最干燥的方法是什么 写入自定义授权属性: public class MyAuthorizeAttribute : AuthorizeAttribute {

我有一个控制器,它加载一篇文章并显示它。这篇文章有一个属性,可以显示它是私有的还是公有的

如果文章是私有的,我希望用户在显示文章之前登录

我不能简单地在这个动作上加上[Authorize]属性,因为如果文章是公开的,就不需要授权来显示它

最干燥的方法是什么

我希望依赖默认授权模型的内置功能(如果不需要,我不想手动编写重定向和传递参数)

最干燥的方法是什么

写入自定义授权属性:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var articleId = httpContext.Request["id"] as string;
        var article = SomeRepository.GetArticle(id);
        // You can also correlate the article with the currently 
        // connected user and see if it belongs to him, ...
        return article.IsPublic;
    }
}

然后使用此自定义属性装饰您的操作。

这看起来不错,但我需要检查用户是否也已登录。我提出了一个后续问题,请也提供帮助: