我有一个网页,可以通过以下方式访问
myapp.mydomain.com/Account/Login
我在站点的根文件夹中有我的项目应用程序,但是如果我在应用程序本身中编辑路由配置,这会破坏事情。
我正在尝试使用 URL 重写模块,以便当用户请求
myapp.mydomian.com
它会自动将他重定向到上面的完整 URL。
我无法弄清楚如何以这种方式配置它!
我有一个网页,可以通过以下方式访问
myapp.mydomain.com/Account/Login
我在站点的根文件夹中有我的项目应用程序,但是如果我在应用程序本身中编辑路由配置,这会破坏事情。
我正在尝试使用 URL 重写模块,以便当用户请求
myapp.mydomian.com
它会自动将他重定向到上面的完整 URL。
我无法弄清楚如何以这种方式配置它!
根据您在问题下方评论中的回答:
“他们去 myapp.mydomian.com 登录,这是他们应该看到的第一页”
强制用户始终必须登录才能使用您的应用程序的正确方法是使用该System.Web.Mvc.Authorize
属性。
不要尝试重写规则或弄乱路由或从web.config
文件<authorize>
配置元素中驱动它。
以模板 MVC Internet Application 为例,我们有两个控制器:
如果我们希望只保护您的 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