Asp.net MVC 4 Web应用程序中的身份验证和授权

时间:2013-12-16 06:18:41

标签: asp.net-mvc-4

我知道如何在asp.Net webform应用程序中使用授权和身份验证属性,但我需要将我的旧网站升级到MVC 4,我是新手,并且不知道它是如何工作的。

我试图在web.config文件中全局使用它,但它没有帮助我 我对要隐藏匿名用户的内容使用了[Authorize]属性,并使用[AllowAnonymous]属性来允许匿名用户访问。
另外,我在web.config文件中启用了身份验证,但我仍然没有得到任何预期的结果。
因为,当我在任何页面上应用[Authorize]属性时,它甚至不允许经过身份验证的用户 任何帮助将不胜感激 我使用以下代码;

Global.asax 文件中的

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new LogonAuthorize());
    filters.Add(new HandleErrorAttribute());
    filters.Add(new System.Web.Mvc.AuthorizeAttribute());
    filters.Add(new RequireHttpsAttribute());
}

例如,我想禁止匿名用户访问我的主页,我用过;

[Authorize]
public ActionResult Index()
{
    return View();
}

登录页面我用

[AllowAnonymous]
[HttpPost]
public ActionResult Login()
{
    return View();
}

在web.config文件中我使用了

 <authentication mode="Forms">
     <forms loginUrl="~/Account/Login" timeout="2880" />
 </authentication>
 <authorization>
     <deny users="?"/>
 </authorization>

但是我遇到了和前面提到的相同的问题。任何有关解释的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

在我看来,您拥有多个全局授权过滤器,并且您也使用了授权修饰类。什么是LogonAuthorize()

如果您要使用全局AuthorizeAttribute过滤器,则不要在您的课程上使用授权,并且只对您希望匿名用户访问的方法使用AllowAnonymous。

从web.config中删除所有授权元素。保留身份验证元素。

(刚刚注意到,这已经是6个月了......我怀疑你还在寻找)