自分のdbにUserテーブルがあり、 "Type"フィールドがあります。サイト運営者、監査者、管理者の3種類のユーザーがいます。私は[Authorize(Role = "Publisher")]のようなフィルタを使って、ログオンしたユーザーをフィルタリングする方法を知りたいのですか?MVC3の自分のデータベースに基づいてRoleFilterを作成する方法
0
A
答えて
0
私が理解している[Authorize(Role = "")]属性は、ロールプロバイダを使用するときに使用されます。あなたは非常に簡単に自分自身を転がすことができます - thisリンクを参照してください。
一般的に、私はUserテーブル、Roleテーブル、UserInRoleテーブルを持っています。ロールテーブルには、「管理者」などの役割IDと説明だけがあります。 UserInRoleテーブルは、ユーザーIDをロールIDにリンクする結合テーブルです。
このようにして、ユーザーは複数のロールに所属することができ、1つのロールに限定されることはありません。
これは私のやり方であり、必ずしも正しい方法ではないことにご注意ください。ユーザーテーブルの「タイプ」フィールドを使用しても機能する場合は、カスタムロールプロバイダが実装されているだけで、これとは別の場所に実装されます。
EDIT:[Authorize]属性もメンバーシッププロバイダのみで動作し、ロールプロバイダを持つ必要はありません。私は構文が[Authorize(User = "User1、User2")]かそのようなものだと思う。
EDIT:エラーページにユーザーを取るために、彼は正しい役割ではないかを示す、あなたのAccountControllerであなたのログイン方法にいくつかのカスタム・ロジックを追加することができます:あなたのアドバイスのための
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
if (!User.IsInRole("MyRole"))
{
return Redirect("Error");
}
else
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
}
else
{
ModelState.AddModelError("", "The email or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
関連する問題
- 1. 以前のリスト(mvc3)に基づいてドロップダウンリストを作成する
- 2. ASP.Netのローカリゼーションオブジェクトに基づいてUIを作成する方法
- 3. データベースの内容に基づいて部分を表示する方法
- 4. SQL Serverで自分のデータベースのバックアップを作成する方法
- 5. グリッドテーブルに基づいて画像を作成する方法は?
- 6. ディメンションセレクタに基づいて動的ワークシートを作成する方法
- 7. ロケーションハッシュに基づいてWebアプリケーションを作成する方法
- 8. XSDデータセットに基づいてSQLiteデータベースを作成する
- 9. ブラウザの内容に基づいて基本的なチャットボット/自動レスポンダを作成する方法は?
- 10. asp.net Webフォームのデータベースのテーブルの行に基づいてテキストボックスを動的に作成する方法は?
- 11. ユーザーに基づいてデータベースを選択する方法
- 12. ファイル名のみに基づいてクラスのインスタンスを作成する方法(PHP)
- 13. iPhoneのユーザーの位置に基づいてGPSコンパスを作成する方法
- 14. 別のデータフレームに基づいてデータフレームにインデックスを作成する方法R
- 15. Mysql:年とユニークに基づいて独自のキーの組み合わせを作成する方法
- 16. サーバーからの応答に基づいてCellTableを作成する方法
- 17. three.jsのJSONオブジェクトに基づいてメッシュを作成する方法
- 18. デフォルトのDataGridスタイルに基づいてスタイルを作成する方法は?
- 19. 範囲の値に基づいてIncanterシリーズを作成する方法
- 20. 既存のログインアクションビューに基づいてYiiでウィジェットを作成する方法は?
- 21. QByteArraysに基づいてQDataStreamの配列を作成する方法
- 22. 特定の条件に基づいてデータフレームを作成する方法
- 23. javascriptのオブジェクトリテラルに基づいてif/elseif/else文を作成する方法
- 24. データベースからのデータに基づいてjqueryタブを作成する
- 25. 2つの部分のキーを形成する別の列に基づいて増分番号を作成
- 26. データモデルに基づいてフォームを自動的に生成する
- 27. データベーステーブルに基づいてMVC 3でコントロールを動的に作成する方法
- 28. coredataエンティティに基づいてテーブルビューにカスタムセクションを作成する方法
- 29. 別のものに基づいてiOS plistを作成する
- 30. HTML、CSS、JSでオーディオタグに基づいてカスタムミュージックプレーヤーを作成する方法
THX、私は」役割の問題を解決しました。しかし、私は認証後にログオンについての新しい簡単な問題に遭遇しました。ユーザーがログオンした後にユーザーがロールに属していない場合は、エラーページを表示します。カスタムAuthorizeAttributeを作成する必要がありますか? – vulgur
私の編集を参照してください...私はそれがあなたが望むことをすると思います。 – Jack
ああ、ログイン方法....なぜ私はそれについて前に考えなかったのですか?フック私 – vulgur