我无法让AuthorizeAttribute为开箱即用的MVC 3应用程序工作。所以我创建了自己的属性,继承自AuthorizeAttribute并覆盖所有方法并添加断点以查看发生了什么。
但问题是,属性代码永远不会被调用!知道是什么原因造成的吗?
这是一个完全空白的MVC 3应用程序,带有带有Index方法的HomeController。表单身份验证设置为重定向到〜/ Account / LogOn。但它似乎只是没有加载[授权]属性...
修改
抱歉,伙计们,我今天真的很累:)这实际上不是一个完全空白的项目。我有一些Ninject代码,它为我的HomeController提供了一个存储库。如果我禁用它并在HomeController上创建一个无参数构造函数,AuthorizeAttribute似乎可以正常工作。知道为什么Ninject依赖注入会干扰Authorize属性吗?
- 基督教
答案 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。