Блокировка доступа к приложению для пользователя - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть приложение ASP.NET MVC, в котором используется поставщик членства ASP.NET по умолчанию.

Мой клиент попросил внедрить функцию, которая запрещает пользователям входить в систему (например, для пользователей, которые уходят в отставку и покидают компанию).

Я не могу использовать флаг IsApproved таблицы Membership, поскольку это поле используется для подтверждения регистрации пользователя.

Есть ли встроенный функционал для этого? Каков ваш опыт в подобных сценариях?

1 Ответ

1 голос
/ 09 декабря 2010

Поскольку вы не используете блокировки учетной записи, вы можете использовать для этого флаг IsLockedOut. Если IsLockedOut равно true, пользователь не сможет войти в систему, пока он не будет очищен.

Для получения дополнительной информации о том, как обычно используется это свойство, см. MembershipUser.IsLockedOut.

Если вы хотите избежать использования IsLockedOut для этого и предположить, что вы используете SqlMembershipProvider, другой вариант может заключаться в прямом изменении процедуры, которую провайдер вызывает в процессе входа в систему: aspnet_Membership_GetPasswordWithFormat.

Если вы проверите код для этой процедуры, вы увидите, что если пользователь не существует или заблокирован, он возвращает ненулевой результат:

IF (@UserId IS NULL)
    RETURN 1

IF (@IsLockedOut = 1)
    RETURN 99

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

Между этими двумя вариантами я бы выбрал использование IsLockedOut, но я подумал, что добавлю еще один вариант, если есть сильное предпочтение использовать его таким образом.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...