2010-03-16 2 views
0

Я создаю пользовательский поставщик членства для веб-приложения, в котором уже есть его пользователи, хранящиеся в существующей таблице базы данных. Я использовал некоторый код из учебника, чтобы помочь запустить мой провайдер, но я немного потерял, как я могу взаимодействовать с фактическим процессом регистрации.Пользовательское членство ASP.Net и элемент управления Login

У моего пользовательского провайдера есть метод переопределения для ValidateUser(), и в настоящий момент я просто вернусь туда. Но я хочу создать текущий пользовательский объект для хранения в области сеанса. Этот объект просто сохранит некоторые особенности пользователя.

Я предполагаю, что другим вариантом будет использование поставщика профиля ASP.Net, но я снова не понимаю, где подключиться к процессу регистрации, чтобы запустить некоторый код, который либо создаст этот пользовательский объект, либо заполнит информацию профиля для текущий пользователь.

ответ

0

Как сказал Джон, не заставляйте ваш код провайдера хранить информацию о пользователе в сеансе. Вместо этого вы можете использовать элемент управления Login (here, у вас есть дополнительные сведения об этом), он будет использовать вашего провайдера, если все будет правильно настроено, и если логин будет успешным (в вашем случае это будет потому, что вы возвращаете true) вы можете получить пользователя в обработчике событий OnLoggedIn, вызвав метод GetUser поставщика и сохранить MemberhipUser, возвращенный в сеансе.

Ваш код может выглядеть нечто похожее на это:

protected void LoginCtrl_LoggedIn(object sender, EventArgs e) 
{ 
    var user = Membership.GetUser(LoginCtrl.UserName, true); 
    Session["CurrentUser"] = user; 
} 
+0

Я согласен с вами по поводу разделения проблем, я не планировал поставить код, который управляет состоянием пользователей в поставщике членства, а завожусь способ подключиться к успешной аутентификации и запустить некоторый код в другом классе. Ваш ответ был очень полезен и был тем, что я искал. – JBeckton

0

Использование принципала «разделение проблем», ваш членский провайдер не должен хранить информацию о пользователе в сеансе.

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