Asp.net mvc MVC4中的角色何时初始化?在成功登录后不会

Asp.net mvc MVC4中的角色何时初始化?在成功登录后不会,asp.net-mvc,roles,simplemembership,Asp.net Mvc,Roles,Simplemembership,想要设置一些基于角色的依赖项(Ioc、Ninject)。但成功登录后,用户的角色未知。何时何地注射?我可以强制初始化角色吗?还是我自己去拿 [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid &&

想要设置一些基于角色的依赖项(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);
    }
应用程序从HomeController(无角色集)开始,成功登录后,应用程序被重定向到de HomeController(请参阅上面的标准代码),现在角色已设置。。。 一个技巧是通过添加所有角色或附加的“公共”角色,强制在HomeController中初始化角色

但这会强制登录,也会强制HomeController作为起点。希望这是一个称我的DoRolebasedObjectBinding为“优雅”的地方。

基于此,答案相当简单:自己动手:

var roles = Roles.Provider;
string[] rolesArr = roles.GetRolesForUser(username);

我不知道你所说的“基于角色的模型绑定”是什么意思,你能更具体地说明你想做什么吗?基于名称:WebSecurity.Login,你似乎在进行自己的验证,而不是使用成员资格提供程序。如果是这种情况,则需要注意在每个请求上为经过身份验证的用户加载角色。按照现在的方式,DoRolebasedObjectBinding()将设置一个cookie,然后需要读取并填充角色(创建标识和主体)。对象注入基于登录用户的角色。角色是在登录后的某个地方设置的,但在我预期的时刻还没有设置(直接在成功登录之后)。登录只是设置了一个cookie,角色等等都是在下一个请求中设置的(从现在提交的cookie中)。这就是你要问的吗?问题是:有没有一个地方,一个钩子,我可以在那里执行基于角色的操作?
var roles = Roles.Provider;
string[] rolesArr = roles.GetRolesForUser(username);