Событие OnLoggedIn на странице входа ASP.NET

Я хочу перенаправить людей в соответствии с их ролью в поставщике членства 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 ответа

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам