我有一个使用默认ASP.NET成员资格提供程序的ASP.NET MVC应用程序。
我的客户要求实施阻止用户登录的功能(例如,对于辞职并离开公司的用户)。
我无法使用Membership表的IsApproved标志,因为该字段用于确认用户注册。
这样做有内置功能吗?你在这样的场景中有什么经历?
答案 0 :(得分:1)
由于您未使用帐户锁定,因此可以使用IsLockedOut
标志。如果IsLockedOut
为true
,则用户在清除之前将无法登录。
有关如何使用此属性的详细信息,请参阅MembershipUser.IsLockedOut
。
如果您想避免使用IsLockedOut
,并假设您正在使用SqlMembershipProvider
,则另一个选项是直接修改提供程序在登录过程中调用的过程:{{1 }}。
如果检查该过程的代码,您将看到如果用户不存在或被锁定,则返回非零结果:
aspnet_Membership_GetPasswordWithFormat
您可以在单独的表中维护被阻止用户的列表,并在此处进行检查。缺点是,如果重新创建此过程或将站点切换到新的成员资格数据库,则这些更改可能会丢失。
在这两个选项之间,我选择使用IF (@UserId IS NULL)
RETURN 1
IF (@IsLockedOut = 1)
RETURN 99
,但我想我会添加另一个选项,以防有这种方式强烈反对使用它。
HTH