如何在登录后立即检查/分配用户的角色?
问题描述:
对于我的应用程序,当用户登录时,我需要检查他们是否有任何角色分配给他们,如果他们没有分配他们的基本角色。同样基于他们的角色,我必须将他们重定向到某些页面。但我不能找到一种方法来检查/设置用户的角色,当他们登录。如何在登录后立即检查/分配用户的角色?
[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"))
那么问题是,类似的东西不起作用,当用户刚刚登录。用户对象是空的。它仅在下一次请求时才填充数据。我已经在我的代码块的内嵌评论中解释过了。 – m0s
哦,我很抱歉这个答案!我只是想写你可以直接调用RoleProvider,有2个参数,就像你在回答和打印错误,键入User而不是角色。男人,抱歉... – IceN