3

いくつかの役割ベースの依存関係(Ioc、Ninject)を設定したい。ただし、ログインが成功した後、ユーザーの役割は不明です。注射をいつどこで行うか?ロールの初期化を強制できますか?または、自分で取得する必要がありますか?

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
        {
            DoRolebasedObjectBinding(model.UserName);   // THIS IS THE WRONG PLACE!
            return RedirectToLocal(returnUrl);
        }

        // If we got this far, something failed, redisplay form
        ModelState.AddModelError("", "The user name or password provided is incorrect.");
        return View(model);
    }

アプリケーションはHomeContoller(ロールセットなし)で始まり、ログインに成功すると、アプリケーションはde HomeControllerにリダイレクトされ(上記の標準コードを参照)、ロールが設定されます... 1つのトリックは、ロールを強制的に初期化することです。すべての役割または追加の「共通」役割を追加することによるHomeController

public class HomeController : Controller
{
    [Authorize(Roles = "Common")]
    public ActionResult Index()
    {
        DoRolebasedObjectBinding(User.Identity.Name);

ただし、これによりログインが強制され、HomeControllerも開始点として強制されます。うまくいけば、私のDoRolebasedObjectBindingを呼び出すための「エレガントな」場所です。

4

1 に答える 1

0

新しいMVC4インターネットテンプレートのロールベースの認証に基づくと、答えはかなり単純です。自分で行う:

var roles = Roles.Provider;
string[] rolesArr = roles.GetRolesForUser(username);
于 2012-12-11T21:54:15.460 に答える