Событие OnLoggedIn на странице входа ASP.NET - PullRequest
1 голос
/ 11 января 2011

Я хочу перенаправить людей в соответствии с их ролью в поставщике членства asp.net. У меня есть код в событии «OnLoggedIn» на странице входа. Вот что я пробовал до сих пор, и ничего не работает:

Приведенный ниже код возвращает false на шаге .IsAuthenticated, он говорит, что пользователь не аутентифицирован. На каком этапе на странице входа в систему пользователь проходит проверку подлинности, я подумал, что событие «OnLoggedIn» - подходящее место для этого.

if (HttpContext.Current.User != null)
{
    if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
        if (HttpContext.Current.User.Identity is FormsIdentity)
        {
        }
    }
}

Вторая вещь, которую я пытался получить, - получить все роли для пользователя, но он ничего не возвращает, возвращает пустой массив строк, и я проверил базу данных, что роль назначена этому конкретному пользователю. Вот как я пытаюсь:

string[] userRole = Roles.GetRolesForUser(LoginUser.UserName);

Итак, мой вопрос: как я могу получить роль на странице входа в систему, нужно ли мне проверять это в каком-то другом событии или каким-либо другим способом. Заранее спасибо за помощь, Laziale

Ответы [ 3 ]

2 голосов
/ 11 января 2011

Первая ситуация не будет работать, потому что она возвращает значение запроса, как он поступил. Вход в систему с помощью FormsAuthentication в основном просто устанавливает cookie в ответ, так что запрос next получает правильного пользователя.

Вторая ситуация должна работать, хотя, при условии, что LoginUser - имя вашего элемента управления входом в систему.

0 голосов
/ 16 января 2011

Грег полностью прав.Итак, вопрос в том, почему роли не возвращаются?Может быть несколько причин, в зависимости от того, как вы создали роли в настройках вашего roleprovider в web.config.

Поэтому убедитесь, что ваш поставщик ролей указывает на ту же базу данных, в которой вы видите роли.Также убедитесь, что вы не используете другого поставщика ролей для создания ролей, а получаете к нему доступ через другого.Это может произойти, если у вас есть более одного поставщика ролей в web.config.

Также проверьте, не является ли это applicationName проблемой .

Если это непомогите опубликовать настройки ролей web.config, а также информацию о том, как вы создаете роли.

0 голосов
/ 11 января 2011

, если у вас есть некоторый предопределенный набор правил, например (SuperAdmin, Admin, User, ....), чем

Вы можете использовать корпус переключателя

и в соответствии с уровнем аутентификации

вы можете классифицировать / перенаправить пользователя соответственно с соответствующим URL

...