使用成员资格提供程序和MVC框架,是否可以动态更改路由,以便已登录的用户转到他自己的页面,而不是默认页面。
目前我转到默认设置。如果用户已经登录,那么我会重定向到他们自己的页面。这不是正确的方法!可以吗?
在RegisterRoutes我有这个
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
答案 0 :(得分:1)
一种选择是使用路线约束。
public class AuthenticatedConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return httpContext.Request.IsAuthenticated;
}
}
然后您可以在常规默认值之前定义“LoggedInDefault”路由:
routes.MapRoute(
"LoggedInDefault",
"{controller}/{action}/{id}",
new { controller = "LoggedIn", action = "Index", id = "" },
new { loggedIn= new AuthenticatedConstraint()}
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);