URL重写IIS,重定向到登录页面

时间:2013-09-05 17:55:56

标签: asp.net-mvc-4 iis url-rewriting url-redirection

我有一个可以通过

访问的网页
myapp.mydomain.com/Account/Login

我的项目应用程序位于该站点的根文件夹中,但如果我在应用程序本身内编辑路由配置,则会破坏这些内容。

我正在尝试使用URL重写模块,以便在用户请求时

myapp.mydomian.com

它会自动将他重定向到上面的完整网址。

我无法弄清楚如何以这种方式配置!!

1 个答案:

答案 0 :(得分:0)

根据您在问题评论中的答案:

  

“他们去myapp.mydomian.com登录,这是他们应该看到的第一页”

强制用户始终登录以使用您的应用程序的正确方法是使用System.Web.Mvc.Authorize属性。

不要尝试重写规则或弄乱路由,也不要从web.config文件<authorize>配置元素中删除它。

以模板MVC Internet Application为例,我们有两个控制器:

  • AccountController
  • 的HomeController

如果我们希望仅保护MVC应用程序的某些部分,那么您将使用[Authorize]属性装饰每个控制器类。例如:

[Authorize]
public class HomeController : Controller
{
    ....
}

但是,如果您希望保护每个控制器,那将会相当繁琐。相反,您可以通过向RegisterGlobalFilters类中的FilterConfig静态方法添加一行来全局执行此操作。此类位于项目的App_Start文件夹(FilterConfig.cs)。

打开此文件,确保将以下行添加到RegisterGlobalFilters静态方法:

filters.Add(new AuthorizeAttribute());

例如:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new AuthorizeAttribute());  // <-- Add me
}

另外,请确保在您的web.config部分下的system.web文件中:

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

开箱即用它应该像这样配置。

欲了解更多信息,请阅读:

  

http://www.davidhayden.me/blog/asp.net-mvc-4-allowanonymous-attribute-and-authorize-attribute