Пользовательское членство в ASP.Net и контроль входа - PullRequest
0 голосов
/ 16 марта 2010

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

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

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

Ответы [ 2 ]

0 голосов
/ 16 марта 2010

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

Ваш код может выглядеть примерно так:

protected void LoginCtrl_LoggedIn(object sender, EventArgs e)
{
    var user = Membership.GetUser(LoginCtrl.UserName, true);
    Session["CurrentUser"] = user;
}
0 голосов
/ 16 марта 2010

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

...