Как проверить, вошел ли пользователь в систему
Я создал страницу входа в систему, где пользователи должны предоставить имя пользователя и пароль, чтобы иметь доступ к некоторым конкретным ресурсам, где они могут загружать изображения или просто редактировать некоторые описания о себе. Мой файл web.config выглядит так:
<authentication mode="Forms">
<forms loginUrl="Secure/Login.aspx" defaultUrl="index.aspx" name=".ASPXFORMSAUTH" timeout="30"/>
</authentication>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
<location path="Secure">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
Поэтому, когда пользователь ввел имя пользователя и pw, он перенаправляется на страницу index.aspx. В зависимости от того, вошел пользователь в систему или нет, index.aspx должен показывать или скрывать некоторые вещи. Вот как я проверяю, вошел ли он в систему:
bool isLoggedIn = HttpContext.Current.User.Identity.IsAuthenticated;
if (isLoggedIn)
{
placeHolder2.Visible = true;
...
}
Теперь проблема в том, что: HttpContext.Current.User.Identity.IsAuthenticated; ВСЕГДА возвращает true, поэтому посторонние люди будут видеть то, что должно быть скрыто.
Я не уверен насчет: HttpContext.Current.User.Identity.IsAuthenticated; Я только что гуглил "Как проверить, вошел ли пользователь в систему", и предложения были следующими: HttpContext.Current.User.Identity.IsAuthenticated;
Я хочу, чтобы только те пользователи, которые вошли в систему, просмотрели личные вещи. Как мне это сделать? Как сделать так, чтобы: HttpContext.Current.User.Identity.IsAuthenticated возвращал true только тогда, когда пользователь вошел в систему? Спасибо
3 ответа
if (Request.IsAuthenticated) {.....}
редактировать на основе некоторых комментариев. Аутентифицированы с помощью "форм", проверьте здесь
HttpContext.Current.User.Identity.IsAuthenticated
// будет "Forms", если используется авторизация на основе форм // "Negotiate" использует интегрированные окна // etc
Если вы используете.net 4.5, и вы хотите, чтобы пользователь "SET" утверждал. ClaimsPrincipal рекомендуется прочитать
bool isLoggedIn = System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Моя кодировка
bool val1 = (System.Web.HttpContext.Current.User != null) &&
(System.Web.HttpContext.Current.User.Identity.IsAuthenticated) &&
(System.Web.HttpContext.Current.User.Identity.AuthenticationType.ToString() == "Forms");
для идентификации пользователей с помощью доменного имени и входа в систему