如何在登录后立即检查/分配用户的角色?

问题描述:

对于我的应用程序,当用户登录时,我需要检查他们是否有任何角色分配给他们,如果他们没有分配他们的基本角色。同样基于他们的角色,我必须将他们重定向到某些页面。但我不能找到一种方法来检查/设置用户的角色,当他们登录。如何在登录后立即检查/分配用户的角色?

[HttpPost] 
    public ActionResult LogOn(LogOnModel model, string returnUrl) 
    { 
     if (ModelState.IsValid) 
       { 
       if (MembershipService.ValidateUser(model.UserName, model.Password)) 
       { 
         FormsService.SignIn(model.UserName, model.RememberMe); 
        if(User.IsInRole("User")) 
//This won't work becauser User is not populated yet. It will be populated only on next request for some reason that has to do with setting cookies 
    } 

任何想法如何来解决这一问题?

显然Roles.IsUserInRole方法允许通过字符串作为用户名,所以它是可以检查用户会员资格,而无需调用用户对象。

有些事情是这样的吗?

if(User.IsInRole(model.UserName, "User")) 
+0

那么问题是,类似的东西不起作用,当用户刚刚登录。用户对象是空的。它仅在下一次请求时才填充数据。我已经在我的代码块的内嵌评论中解释过了。 – m0s

+0

哦,我很抱歉这个答案!我只是想写你可以直接调用RoleProvider,有2个参数,就像你在回答和打印错误,键入User而不是角色。男人,抱歉... – IceN