ASP.NET MVC 3 AuthorizeAttribute不工作,甚至没有被调用

时间:2011-04-14 18:32:01

标签: asp.net-mvc asp.net-mvc-3

我无法让AuthorizeAttribute为开箱即用的MVC 3应用程序工作。所以我创建了自己的属性,继承自AuthorizeAttribute并覆盖所有方法并添加断点以查看发生了什么。

但问题是,属性代码永远不会被调用!知道是什么原因造成的吗?

这是一个完全空白的MVC 3应用程序,带有带有Index方法的HomeController。表单身份验证设置为重定向到〜/ Account / LogOn。但它似乎只是没有加载[授权]属性...

修改

抱歉,伙计们,我今天真的很累:)这实际上不是一个完全空白的项目。我有一些Ninject代码,它为我的HomeController提供了一个存储库。如果我禁用它并在HomeController上创建一个无参数构造函数,AuthorizeAttribute似乎可以正常工作。

知道为什么Ninject依赖注入会干扰Authorize属性吗?

- 基督教

2 个答案:

答案 0 :(得分:1)

您说web.config上有以下设置?

<authentication mode="Forms">
    <forms loginUrl="~/Account/logOn" />
</authentication>

你是如何使用authorize属性的,我们能看到一些代码吗?

您可能需要逐步查看“Authenticating Users with Forms Authentication”指南。

答案 1 :(得分:0)

创建自定义属性并启用Forms身份验证是不够的。您仍然必须使用属性修饰您希望过滤器执行的控制器/操作。

[Authorize]
public ActionResult Index()
{
    // ...your code
}

[Authorize]
public class HomeController
{
    // ... your actions
}

编辑正如tpeczek在评论中所说,还要确保[Authorize]使用的是AuthorizeAttribute,而不是System.Web.Mvc.AuthorizeAttribute。