Asp.net mvc 3 仅在特定参数上需要授权的控制器
我有一个控制器,它加载一篇文章并显示它。这篇文章有一个属性,可以显示它是私有的还是公有的 如果文章是私有的,我希望用户在显示文章之前登录 我不能简单地在这个动作上加上[Authorize]属性,因为如果文章是公开的,就不需要授权来显示它 最干燥的方法是什么 我希望依赖默认授权模型的内置功能(如果不需要,我不想手动编写重定向和传递参数) 最干燥的方法是什么 写入自定义授权属性:Asp.net mvc 3 仅在特定参数上需要授权的控制器,asp.net-mvc-3,authorization,Asp.net Mvc 3,Authorization,我有一个控制器,它加载一篇文章并显示它。这篇文章有一个属性,可以显示它是私有的还是公有的 如果文章是私有的,我希望用户在显示文章之前登录 我不能简单地在这个动作上加上[Authorize]属性,因为如果文章是公开的,就不需要授权来显示它 最干燥的方法是什么 我希望依赖默认授权模型的内置功能(如果不需要,我不想手动编写重定向和传递参数) 最干燥的方法是什么 写入自定义授权属性: public class MyAuthorizeAttribute : AuthorizeAttribute {
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;
}
}
然后使用此自定义属性装饰您的操作。这看起来不错,但我需要检查用户是否也已登录。我提出了一个后续问题,请也提供帮助: