SimpleMembership では、ユーザーをロック/ロック解除するための列がデータベースにありません。基本的に、アプリケーションでユーザーを有効または無効にするには、管理者が必要です。それに代わるものはありますか?
5 に答える
おそらく「承認された」方法ではありませんが、これが私のやり方です。
Webpages_Membershipテーブル内にIsConfirmedというフィールドがあります。通常、これは 2 段階の登録プロセスが必要な場合に使用します。サインアップしてから、電子メール内のリンクを介してアクティブ化します。ただし、本来、このフィールドは以前のaspnet_Membershipテーブル内のIsApprovedと同じ効果があります。true に設定すると、ユーザーはログインできます。false の場合はできません。したがって、単純な古い SQL を使用して true または false に設定します。
// If using EntityFramework
// 1. Setup my params
var params = new List<SqlParameter>() {
new SqlParameter("@UserID", 1),
new SqlParameter("@Activate", true) // or false
};
SqlParameter[] paramArray = params.ToArray();
// 2. Update the database
myDbContext.Database.ExecuteSqlCommand("UPDATE webpages_Membership SET IsConfirmed = @Activate WHERE UserId = @UserID", paramArray);
私はまだsimplemembershipを試していませんが、これは私が取り組んでいるいくつかの小さなプロジェクトには素晴らしいと思います. 以下にいくつかのオプションを示します。
オプション 1 : ここに示すようにテーブルにカスタム フィールドを追加します - http://www.dwdmbi.com/2012/10/adding-custom-fields-to-vs2012-mvc4.html
オプション 2ユーザーに戻る外部キーを持つ新しいテーブルを作成します。この値について追加のチェックを行います。
いずれにせよ、あなたはチェックのために何か余分なものに行きます. 'Authorize' 属性をカスタマイズして、チェックを含めることができます (手順はこちら - ASP.NET MVC で Authorize 属性をオーバーライドする)。
このアプローチを試してください。IsLockedOut ではなく IsApproved を使用します。実装で IsAproved をまだ使用していない場合は、これが適切な解決策になります。
MembershipUser user = Membership.GetUser(username);
user.IsApproved = false;
Membership.UpdateUser(user);
これは正確にユーザーをロックしているわけではありません。技術的には、この呼び出しはユーザーから承認済みステータスを取得し、ログインできないままにします。
あなたが使用しているテクノロジーはわかりませんが、指定したようにロックを解除してテーブルの列を指定するか、元のテーブルのエントリを削除して新しいテーブルに挿入できるデータベースに1つのテーブルを追加する必要があります(tlbDisableと言います)テーブル (tlbDisable)。
そのユーザーを再度有効にする場合は、tlbDisable からエントリを削除して、元のユーザー テーブルに挿入します。