2010-08-25 9 views
2

Используя поставщик членства и структуру MVC, возможно ли, что маршруты динамически изменяются, так что уже зарегистрированный пользователь переходит на свою страницу, а не по умолчанию.Динамические маршруты и поставщики членства

На данный момент я перехожу к стандарту. Если пользователь уже зарегистрировался или нет, я делаю перенаправление на их собственную страницу. Это не может быть правильным! Может это?

В RegisterRoutes я это

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

ответ

1

Один из вариантов будет использовать Route Constraint.

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 = "" } 
); 
Смежные вопросы