2013-05-23 2 views
7

У меня есть следующий код, чтобы проверить, имеет ли пользователь доступ к приложению или нет. Задача System.Web.HttpContext.Current.User.Identity.Name возвращает пустой. Я проверил. В чем может быть проблема? В моем другом приложении используется тот же фрагмент кода, и он работает там. Почему это происходит?Почему System.Web.HttpContext.Current.User.Identity.Name возвращает пустую строку?

string username = System.Web.HttpContext.Current.User.Identity.Name; 
string str = "SELECT LASTNAME +', '+ FIRSTNAME AS NAME, USER_NAME, DEPARTMENT FROM DBNAME.DBO.TABLENAME WHERE USER_NAME = '" + username + "' "; 
SqlCommand cmd = new SqlCommand(str, conn); 
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
if (rdr.HasRows == false) 
{ 

     Server.Transfer("unauthorized.htm"); 
} 
else 
{ 
    while (rdr.Read()) 
    { 
     name = rdr["NAME"].ToString(); 
     username = rdr["USER_NAME"].ToString(); 
     dept = rdr["DEPARTMENT"].ToString(); 
    } 
} 
+0

Является ли этот код взят из приложения ASP.net? –

+0

Выполняют ли оба приложения собственное состояние аутентификации? –

+0

, возможно, стоит дать нам ваш web.config – Aron

ответ

5

Похоже, у вас есть анонимный пользователь. Если вы не хотите, чтобы позволить анонимным пользователям, добавьте следующие строки в файле web.config:

<system.web> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 
</system.web> 
+0

Это просто дает мне ошибку сервера 401 - неавторизованный: доступ запрещен из-за неверных учетных данных. – Artemis

+3

Является ли IIS настроено на использование проверки подлинности Windows и есть ли у вас '' в web.config? – Joe

+0

Да и да. Это просто странно. У моего другого приложения есть тот же код. И там отлично работает. – Artemis

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