Поскольку вы не используете блокировки учетной записи, вы можете использовать для этого флаг IsLockedOut
. Если IsLockedOut
равно true
, пользователь не сможет войти в систему, пока он не будет очищен.
Для получения дополнительной информации о том, как обычно используется это свойство, см. MembershipUser.IsLockedOut
.
Если вы хотите избежать использования IsLockedOut
для этого и предположить, что вы используете SqlMembershipProvider
, другой вариант может заключаться в прямом изменении процедуры, которую провайдер вызывает в процессе входа в систему: aspnet_Membership_GetPasswordWithFormat
.
Если вы проверите код для этой процедуры, вы увидите, что если пользователь не существует или заблокирован, он возвращает ненулевой результат:
IF (@UserId IS NULL)
RETURN 1
IF (@IsLockedOut = 1)
RETURN 99
Вы можете сохранить список заблокированных пользователей в отдельной таблице и проверить это здесь. Недостатком является то, что если эта процедура когда-либо воссоздается или сайт переключается на новую базу данных членства, эти изменения могут быть потеряны.
Между этими двумя вариантами я бы выбрал использование IsLockedOut
, но я подумал, что добавлю еще один вариант, если есть сильное предпочтение использовать его таким образом.
НТН