2010-08-25 85 views
2

使用成員資格提供者和MVC框架,是否有可能會動態更改路由,以便已登錄的用戶訪問他自己的頁面,而不是默認頁面。動態路由和成員資格提供者

此刻我去默認。如果用戶已經登錄或沒有登錄,那麼我會重定向到他們自己的頁面。這不可能是正確的方法!它可以?

在的RegisterRoutes我有這個

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

回答

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 = "" } 
); 
相關問題