2014-09-20 6 views
0

У меня есть URL-адрес, как www.abc.com в приложении mvc3, я установить map.route по умолчанию, как этотЧто касается маршрутизации в MVC

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "UserLogOnPage", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults 
); 

теперь, что происходит, когда я типа www.abc.com и введите его в Controller: UserLogOnPage Method: Logon и в URL-адресе браузера также отображается www.abc.com, который является правильным, но когда введите url как www.abc.com/UserLogOnPage/Logon, тот же метод и контроллер, я хочу URL-адрес, например, www .abc.com не www.abc.com/UserLogOnPage/Logon, как я могу это сделать.

Благодаря

+0

Вы бы требовать отображение URL-адрес для перенаправления www.abc. com/UserLogOnPage/Вход на сайт www.abc.com в вашем global.asax –

ответ

1

Я почти уверен, что это не то, что вы на самом деле пытаетесь сделать - это настройка маршрута приведет к любой URL перенаправлены на LogOn странице.

Судя по URL, что это выглядит вы после фактически аутентификации, т.е. если анонимные посещения пользователем www.abc.com они просят войти в систему, прежде чем они могут получить доступ к сайту.

К счастью для вас, MVC уже выполнил труд, все, что вам нужно сделать, это решить, как вы хотите, чтобы он работал. Аутентификация может быть применена на разных уровнях, и область определяется тем, где устанавливается AuthorizeAttribute.

Global.asax - аутентификация требует каждое действие

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    ... 
    filters.Add(new AuthorizeAttribute()); 
} 

Контроллер - аутентификация требуется для всех действий в рамках конкретного контроллера

[Authorize] 
public class AccountController : Controller 
{ 
    ... 
} 

Действие - аутентификация для этого требуется только действие

[Authorize] 
public ActionResult AccountDetails() 
{ 
    ... 
} 

Чтобы определить, какие страницы вы хотите, чтобы пользователи были перенаправлены в результате AuthorizeAttribute, вы можете настроить раздел authorization в web.config

<authentication mode="Forms"> 
    <forms loginUrl="~/UserLogOnPage/LogOn" /> 
</authentication>