2013-08-01 5 views
3

Я создал страницу входа, где пользователи должны указать имя пользователя и пароль, чтобы иметь доступ к определенным ресурсам, где они могут загружать изображения или просто редактировать некоторые описания о себе. Мой файл 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; ALWAYS возвращает true, поэтому несанкционированные пользователи будут видеть вещи, которые должны быть скрыты.

Я не уверен в: HttpContext.Current.User.Identity.IsAuthenticated; Я просто искал «Как проверить, зарегистрирован ли пользователь», и были предложения: HttpContext.Current.User.Identity.IsAuthenticated;

Я хочу только людей, которые вошли в систему, чтобы просмотреть личные вещи. Как мне это сделать? Как сделать: HttpContext.Current.User.Identity.IsAuthenticated возвращает только true, когда пользователь вошел в систему? Благодаря

+0

дубликат http://stackoverflow.com/questions/6086529/ how-to-check-user-is-logged-in-in-asp-net-c – Avitus

+0

Я видел этот поток, но это не помогает мне решить мою проблему. – AomSet

+1

Является ли HttpContext.Current.User.Identity.IsAuthenticated true для анонима ous пользователь тоже? – Win

ответ

7
if (Request.IsAuthenticated) {.....} 

редактировать на основе некоторых комментариев идентифицированных с помощью «Формы», проверьте здесь

HttpContext.Current.User.Identity.IsAuthenticated // будет «Форма» при использовании форм на основе аутентификации // «Согласование» используют окна интегрированных // etc

При использовании .net 4.5 и вы хотите, чтобы требования пользователя «SET». ClaimsPrincipal is recommended reading

+0

'HttpContext.Current.User.Identity.IsAuthenticated' и' HttpContext.Current.Request.IsAuthenticated' одинаковы. Другими словами, согласно OP, использование 'Request.IsAuthenticated' не будет отличаться, потому что оно также вернет true. – Win

+0

: Request.IsAuthenticated дает желаемое поведение, но для этого нет. Это те, которые я уже пробовал. И спасибо, он работает с: Request.IsAuthenticated – AomSet

+0

Я ошибался, это не исправить, по-прежнему та же проблема. До сих пор я узнал, почему он возвращает true, даже если пользователь не вошел в систему. HttpContext.Current.User.Identity.IsAuthenticated возвращает имя на моем компьютере (адрес/имя хоста). Почему это так? Вместо этого я должен проверить, вошел ли пользователь в систему с именем пользователя и паролем – AomSet

3

bool isLoggedIn = System.Web.HttpContext.Current.User.Identity.IsAuthenticated

0

Моего кодирование

bool val1 = (System.Web.HttpContext.Current.User != null) && 
    (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) && 
    (System.Web.HttpContext.Current.User.Identity.AuthenticationType.ToString() == "Forms"); 

для идентификации пользователей с помощью домена входа и вход в виде

+0

Привет, Дэвид, почему это не полезно? Дэвид? –

Смежные вопросы