Как проверить, была ли проверка пользователя (FormsAuthentication) с использованием файлов cookie?

У меня проблема с проверкой (аутентификацией) в моем приложении ASP.NET - я использую FormsAuthentication с включенными cookie-файлами, однако по соображениям безопасности я вынужден ТАКЖЕ использовать другой, внешний источник авторизации (который на основе комбинации имени пользователя и пароля дает пользователю " идентификатор сессии")

Приложение работает нормально, когда пользователь входит в систему, используя свои учетные данные для имени пользователя и пароля (таким образом, получает sessionID). Однако из-за того, что куки включены, страницу входа можно пропустить (пользователь перенаправлен на default.aspx), и он не получит правильный sessionID.

У меня вопрос, есть ли возможность проверить, если пользователь

а) пришел со страницы входа (таким образом, был перенаправлен на default.aspx)

ИЛИ ЖЕ

б) FormAuthentication была выполнена на основе данных cookie, а не имени пользователя / пароля

2 ответа

Решение

Да, вы можете проверить, с какой страницы пришел пользователь, используя "request.UrlReferrer.ToString", и сравнить ее с URL-адресом вашей страницы входа.

Предполагая, что вы перенаправляете на страницу default.aspx после того, как пользователь входит в систему (например, загрузка страницы теперь включает куки-файлы аутентификации от перенаправленного клиента), вы будете знать, аутентифицированы ли они с помощью global.asax.cs "Событие Application_AuthenticateRequest" global.asax.cs.:

protected void Application_AuthenticateRequest(Object oSender, EventArgs eA)
{
    // Wire up authenticated principal with user information.

    if (this.Request.IsAuthenticated == true)
    {
         // do something with this.User.Identity.Name to map to a "sessionid"
    }
}

Вы спрашиваете об определении, вошли ли они в систему и приземлились дома как перенаправленный пользователь, или они пришли домой (или любой другой вид) непосредственно с помощью сохраненного в браузере файла cookie, но я думаю, что это не имеет значения. Если вы храните дополнительный ключ аутентификации пользователя как часть обработки входа в систему, возможно, вам следует делать это в событии AuthenticateRequest для всех обращений к защищенным страницам. Примечание: это событие часто запускается (css-файлы, изображения и т. Д.). Вы можете игнорировать любые запросы, кроме.aspx.

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