关于在ASP.Net MVC 4中授权属性使用

时间:2015-09-03 09:43:56

标签: asp.net-mvc-4

当我们使用Authorize属性装饰任何操作时,MVC如何重定向到登录表单,因为我的登录控制器名称可能不同,并且视图名称也可能不同。登录视图也可以存储在不同的文件夹而不是共享文件夹中。

请告诉我MVC引擎如何理解在面对Authorize属性时需要加载登录表单?

MVC引擎如何知道登录表单模板的存储位置,因为它的位置可能不同而不是共享文件夹?

如果我的登录控制器名称不同,MVC引擎将如何知道登录控制器名称是什么?

请讨论我在此详细询问的3点。感谢

1 个答案:

答案 0 :(得分:0)

AuthorizeAttribute是一个过滤器,这意味着它可以在关联的控制器操作之前执行。 AuthorizeAttributeOnAuthorization方法中执行其主要工作。如果用户验证失败,则返回HttpUnauthorizedResult操作结果,该结果生成HTTP 401状态代码。在以前版本的ASP.NET MVC中,用户重定向到应用程序的web.config中定义的应用程序登录页面:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

在ASP.NET MVC 5中,重定向过程由OWIN中间件组件处理。它将未经身份验证的请求重定向到LoginPath值 默认为“/Account/Login”:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
         AuthenticationType =
         DefaultAuthenticationTypes.ApplicationCookie,
         LoginPath = new PathString("/Account/Login")
});