Событие 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, а также информацию о том, как вы создаете роли.