动态路线和会员提供者

时间:2010-08-25 18:10:37

标签: asp.net asp.net-mvc authentication asp.net-membership

使用成员资格提供程序和MVC框架,是否可以动态更改路由,以便已登录的用户转到他自己的页面,而不是默认页面。

目前我转到默认设置。如果用户已经登录,那么我会重定向到他们自己的页面。这不是正确的方法!可以吗?

在RegisterRoutes我有这个

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = "" }
);

1 个答案:

答案 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 = "" }
);