いくつかの役割ベースの依存関係(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を呼び出すための「エレガントな」場所です。