2013-06-02 3 views
0

Я использую asp login control в веб-приложении (ASP.NET 4). если пользователь в admin роль я хочу перенаправить на страницу администратора.Перенаправление после входа на сайт

я использую этот код, но не работает:

protected void baseLogin1_LoggingIn(object sender, LoginCancelEventArgs e) 
    { 
     if (Page.User.Identity.IsAuthenticated && Roles.IsUserInRole(Page.User.Identity.Name, "Admin")) 
     { 
      Page.Response.Redirect("admin/Default.aspx"); 
     } 
    } 

пожалуйста, помогите мне.

ответ

1

LoggingInEvent поднимается до того, как пользователь будет аутентифицирован. Итак, первая часть вашего условия всегда ложна. Переместите логику в событии LoggedIn. Попробуйте это:

protected void baseLogin1_LoggedIn(object sender, EventArgs e) 
{ 
    if (Context.User.Identity.IsAuthenticated && Context.User.IsInRole("Admin")) 
    { 
     Context.Response.Redirect("admin/Default.aspx"); 
    } 
} 
+0

Страница. Пользователь. Идентифицирован и Роли.IsUserInRole (Page.User.Identity.Name, «Admin») не работает. –

+0

Событие LoggingIn возникает, когда пользователь отправляет регистрационную информацию, но до того, как пользователь будет аутентифицирован на веб-сайте. Используйте событие LoggingIn, чтобы настроить любую информацию, которая вам нужна, до аутентификации пользователя. Вы можете отменить попытку входа во время события LoggingIn, установив для свойства CancelEventArgs значение Отмена true. После того, как событие LoggingIn поднято, элемент управления Login вызывает событие Authenticate, а затем событие LoggedIn. –

+0

Есть ли лучший способ? –

1

Используйте событие LoggedIn: Описание события является here

Вы должны действительно использовать Server.Transfer("~/admin/Default.aspx"); как это немного более эффективным (менее обзорные экскурсии).

Если на странице нужно сохранить строку запроса для закладки или важно указать правильный URL-адрес в браузере, то необходимо указать Response.Redirect(), но следует учитывать стоимость дополнительной полосы пропускания.

Смежные вопросы