我正在尝试通过选择用户并单击按钮来授予网站管理员激活/停用或解锁多个用户的权限。
asp.net会员资格没有这样的方法(据我所知)。我不想为每个用户调用一次UpdateUser()。
任何想法?
答案 0 :(得分:1)
在这种情况下,您必须创建一个自定义存储过程,以逗号分隔格式向其发送用户名列表,并在服务器上处理它们。这将是稍微复杂和丑陋的工作,因为您还必须发送应用程序名称。对于您的过程处理的每个用户调用aspnet_Membership_UnlockUser
SP,将其传递给应用程序名称(@ApplicationName)和用户名(@UserName)。
查看aspnet_Membership_UnlockUser
SP的逻辑。也许你可以提出一个更好的解决方案。
编辑:另一个解决方案是通过.NET程序集创建一个类型,它类似于一个表,其中包含一个用户名列表,您将其作为UDF参数传递给SqlCommand。在服务器上,您将使用此参数将其与Jigar的查询或循环连接,以用于您的类型中的每个项目。这可能是一个更好的解决方案,因为您可以将程序集重用于其他此类方案。
答案 1 :(得分:1)
您可以使用以下逻辑,但是更好地使用有能力的方式,但上面提到的存储过程中的逻辑正在跟随。
UPDATE dbo.aspnet_Membership
SET IsLockedOut = 0,
FailedPasswordAttemptCount = 0,
FailedPasswordAttemptWindowStart = CONVERT(datetime, '17540101', 112),
FailedPasswordAnswerAttemptCount = 0,
FailedPasswordAnswerAttemptWindowStart = CONVERT(datetime, '17540101', 112),
LastLockoutDate = CONVERT(datetime, '17540101', 112 )
WHERE @UserId IN (YOUR COLLECTED USERID"S WITH COMMA)
现在你需要构建调用上述SP逻辑的逻辑,这样你就可以完成任务。