2012-04-03 4 views
2

У меня есть страница входа в систему, и это вызывает следующий обработчик события:Получить информацию о подлинности пользователя (не имя компьютера)

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
{   
    if (Login1.UserName == "abc" && Login1.Password == "1234"){ 
     if (Request["ReturnUrl"] != null) 
     { 
      FormsAuthentication.SetAuthCookie(userName, false, "AdminPart/AdminHome.aspx"); 
      FormsAuthentication.RedirectFromLoginPage(userName, Login1.RememberMeSet); 
     } 
     else 
     {    
      FormsAuthentication.SetAuthCookie(userName, false, "AdminPart/AdminHome.aspx"); 
      Response.Redirect("HomePage.aspx"); 
     } 
    }  
} 

И мой файл web.config, как это:

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

сейчас , Я пытаюсь получить имя пользователя аутентифицированного пользователя в моем HomePage.aspx.cs, но User.Identity.Name возвращает имя моего компьютера. Я пытался добавить следующий код в файл конфигурации:

<authentication mode="Forms"> 
    <forms loginUrl="~/login.aspx" timeout="10" protection="All"></forms> 
</authentication> 

Но проблема снова произошла с линией <authentication mode="Forms">. После того, как я добавлю эту строку, в моей домашней странице IDE предоставила мне предупреждение для первой строки, начинающейся с <% Page ... %>, что будет ошибка времени выполнения.

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

Редактировать: Я использую Visual Web Devepoler 2008 Express, в Windows 7 (64-разрядная версия).

EDIT2: Неполаженная проблема как-то. Ответ ниже. Как? Зачем? Нельзя ли это сделать программно? Я не знаю, и я хочу знать, почему.

+0

User.Identity.Name может быть пустым, если анонимная аутентификация включена в IIS. Каков результат этого «User.Identity.IsAuthenticated»? –

+0

Это правда. Но что-то совершенно неудобное, я обновляю сообщение сейчас. – mtyurt

+0

Поскольку моя репутация низкая, у меня есть 2 часа, чтобы ответить на мой вопрос. До этого я редактировал вопрос. – mtyurt

ответ

0

Вот решение, которое я нашел: во-первых, я удалил тег авторизации в файле web.config. Затем в окне проводника решений я щелкнул значок Properties и открыла веб-страницу конфигурации для ASP.NET. Затем я нажал Security tab->Set up authentication. Я выбрал вариант с подключением к Интернету, теперь я могу достичь аутентифицированного имени пользователя на Page.User.Identity.Name в любом месте.

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