Windows Authentication към персонализирано удостоверяване, работещо с Profile

Използвам Windows удостоверяване с профил и исках да превключа към персонализирано удостоверяване.
Въпросът ми е Как мога да посоча, че моят потребител е удостоверен и как да задам Profile.UserName.
Знам, че Profile.UserName е само за четене.

В моя Web.Config променям authentication mode="None" и конфигурирам IIS за активиран Anonymous.
В global.asax проверявам дали съществува бисквитка за потребителя. Ако не, потребителят се пренасочва към страница за вход. Когато той изпрати, създавам бисквитката и в този момент бих задал информацията за профила.

Ако някой може просто да ми даде линк за това, ще съм много благодарен.


person Jean-Francois    schedule 29.09.2010    source източник
comment
Може да не е това, което търсите, но има ли причина да не използвате удостоверяване на формуляри? Той прави всичко, което описахте досега, и спестява известно време в сравнение с персонализирането.   -  person Justin C    schedule 29.09.2010
comment
Ще пробвам Forms Authentication и ще ви уведомя.   -  person Jean-Francois    schedule 29.09.2010


Отговори (1)


Изглежда, че Forms Authentication може да се справи с това, от което се нуждаете. Добавете следния ред към вашия root web.config

<authentication mode="Forms">
  <forms name="XXXXX.ASPXAUTH" timeout="60" loginUrl="~/login.aspx" protection="All" path="/"></forms>
</authentication>

Заменете XXX с това, което искате да наречете вашата бисквитка. Също така преименувайте login.aspx на това, което сте нарекли страницата си за вход. Този код ще пренасочи всеки, който не е удостоверен, към страницата за вход.

След това в логиката си за влизане използвайте нещо като следния C# код

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, txtUsername.Text,
     DateTime.Now, DateTime.Now.AddMinutes(60), true, reader["user_level"] + "",
     FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);

С този код ще искате да изпратите потребителското ниво на лицето, което влиза (т.е. администратор, потребител и т.н.), където имам "четец[..."

Последното нещо, което трябва да направите, е да настроите всяка защитена директория със собствен web.config, който очертава потребителските роли, които са разрешени и ролите, които са отказани. Имената, които използвате за ролите в web.config, трябва да съответстват на стойностите, които се изпращат във FormsAuthenticationTicket и ще сте готови.

person Justin C    schedule 29.09.2010
comment
Благодаря на Джъстин, работата е страхотна. С този метод мога да направя всичко необходимо. - person Jean-Francois; 29.09.2010