2010-06-29 2 views
2

Я пытаюсь проверить, принадлежит ли пользователь к своему другу из базы данных и перенаправляет его соответственно.Как получить имя пользователя в глобальном asax?

Я делаю это в маршрутке, который называется Global Asax.

Я просто хочу знать, как получить имя пользователя (из информации входа в систему) в классе обработчика маршрута (или Global asax)

Я использовал это:

string username = HttpContext.Current.User.Identity.Name; 

и очень странно, его назначая «.aspx» как имя пользователя !!

ps: Я искал аналогичный вопрос, но напрасно. извините, если я не искал его полностью.

+0

Какой метод аутентификации вы используете? AFAIK Пользователь задается модулем AuthenticationModule, и поведение может варьироваться в зависимости от используемого вами метода аутентификации. –

ответ

4

Это должно сработать ... должно быть что-то в вашем методе аутентификации.

Как у вас есть настройка?

Похоже, что вы делаете на проверке подлинности себя и назначая идентичность от неправильного сервера переменной

2

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

<authentication mode="Windows"></authentication> 
3

global.asax Session_Start вызывается при запуске сеанса, который, скажем, когда браузер попадает на ваш сайт. В данный момент пользователь браузера не входит в систему, поэтому для вас не должно быть HttpContext.Current.User.Identity.Name. Вы должны получить пустую строку.

Исключение было бы, если пользователь уже прошел аутентификацию и сеанс перезапустился по какой-либо причине, например, если вы отбросили сервер или если таймаут сеанса был короче тайм-аута аутентификации. Но в общем случае, последовательность должна быть:

  1. сессия начинается
  2. пользователь входит в систему и HttpContext.Current.User.Identity.Name становится доступным

Таким образом, ответ на ваш вопрос : «в общем случае вы не можете».

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