2012-02-13 17 views
0

ユーザーを選択してボタンをクリックすることで、複数のユーザーを有効または無効にするWebサイト管理機能を提供しようとしています。asp.netメンバーシップで複数のユーザーを有効/無効にする方法

asp.netメンバーシップには(私が知る限り)このような方法はありません。 UpdateUser()を各ユーザーごとに1回呼び出す必要はありません。

その場合

答えて

1

あなたはカンマ区切り形式でユーザー名のリストを送信し、サーバー上でそれらを処理するためにカスタムストアドプロシージャを作成する必要があります。これは、アプリケーション名を送信する必要があるため、やや複雑で醜い作業になります。プロシージャが処理する各ユーザーに対して、aspnet_Membership_UnlockUser SPには、アプリケーション名(@ApplicationName)とユーザー名(@UserName)が渡されます。

aspnet_Membership_UnlockUser SPの論理を見てください。おそらく、より良い解決策を考え出すことができます。

EDIT:別の解決策は、あなたがSqlCommandオブジェクトへのUDFパラメータとして渡すユーザ名のリストを表のように動作し、.NETアセンブリを介してタイプを作成することです。サーバー上では、このパラメーターを使用して、タイプの各項目のJigarの照会またはループに参加させます。これは、他のこのようなシナリオでアセンブリを再利用できるため、より良いソリューションになる可能性があります。

+0

私はあなたが述べたように、このソリューションは醜いとバグプルーフ –

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ロジックを呼び出すロジックを構築する必要があります。これにより、処理が完了します。

+0

ありがとう、私は心配abouteだ一つのことではありませんので、私はより良い方法を見つけようとしている、同じ考えを持っています。私はそれを使用することができますが、私はどこか(gridview DataKey多分)それを保存する必要がありますmembership.GetAllUsers()を使用してuserIdと他の情報を返します。私はこれがviewstateでuserIdsを持つのが安全だとは思わない? UserIdsにセキュリティ上の問題はありますか? –

+0

その場合、ユーザー名をUIに表示してから、SP内でユーザーIDを再試行します。私はあなたが説明しようとしていることを得ていることを願っています。 –

+0

申し訳ありませんが、私はそうではありません。 –