用户登录后缓存用户信息

时间:2014-03-04 18:00:51

标签: c# entity-framework authentication caching asp.net-mvc-5

我有不同角色的用户。我想根据用户的角色提供受限制的视图。我的代码中有一些东西可以检查角色:

bool isAdmin = UserManager.IsInRole(currentUser.Id,"admin");
bool isEmployee = UserManager.IsInRole(currentUser.Id,"employee");

要使上面的代码工作,我需要实例化currentUser。换句话说,我需要捕获登录的当前用户的信息。我尝试了var user = User.Identity.GetUserId();等许多其他但无法找到工作代码的信息。我将不胜感激任何帮助。谢谢!

更新

这是我完整的方法代码。你们可能想看看,直到我检查上面的例子。

public ActionResult Index()
{ 
    var user = User.Identity.GetUserId(); 
    bool isAdmin = UserManager.IsInRole(user, "admin"); 
    bool isEmployee = UserManager.IsInRole(user, "employee"); 
    if (isAdmin)
    { 
        return View(db.Customers.ToList()); 
    }
    else
    { 
        var restricted = db.Customers.Where(c => c.FirstName == "John");
        return View(restricted); 
    } 
} 

2 个答案:

答案 0 :(得分:3)

[Authorize]属性应该在所需的受限actionAtroller方法中实现。示例如下。

 [Authorize(Roles="Admin")]
public ActionResult Index()
        {
            return View();
        }

此控制器方法仅限于具有角色管理员的用户。此外,可以使用不同的授权标记将相同的动作控制器方法包括两次。

答案 1 :(得分:1)

我以某种方式想出了解决方案。这是工作代码。

if(User.IsInRole("Admin"))
{
    return View(db.Customers.ToList());
}
else
{
    return View(db.MyUserInfo.ToList());
}