用户 IsInRole 仅在从网站登录和注销后才有效
User IsInRole only works after signing in and out from the website
我在我的控制器代码和我的共享 _Layout 视图中添加和删除角色的用户,我正在使用 User.IsInRole 相应地检查和删除链接,但它只有在用户退出网站时才有效User.IsInRole returns 结果正确?
有没有办法重新加载 _Layout 页面以使其正确抓取数据?
控制器更改角色的代码
_userManager.RemoveFromRole(obj.strUserID, "Consumer");
_userManager.AddToRole(obj.strUserID, "Provider");
_context.SaveChanges();
return View("Success");
多个页面使用的共享布局视图
if (!User.IsInRole("Provider"))
{
<li>@Html.ActionLink("Become a Member", "Memmber", "CustProfile")</li>
}
有一次,我为用户删除并添加了新角色,我希望 _Layout.cstml 显示正确的链接,但它没有。如果我退出并重新登录,它工作正常。
有没有办法解决这个问题?
用户在注销前会被缓存,因此您将不得不重新为他们签名。请使用以下代码再次签名。另外,请确保重定向它们而不是查看,以便重新加载页面。
private ApplicationSignInManager _signInManager;
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ??
HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
}
private set
{
_signInManager = value;
}
}
更改角色后添加以下代码:
var userinDb = _context.Users.Find(UserID);
await SignInManager.SignInAsync(userinDb, true,false);
return RedirectToAction("Success");
我在我的控制器代码和我的共享 _Layout 视图中添加和删除角色的用户,我正在使用 User.IsInRole 相应地检查和删除链接,但它只有在用户退出网站时才有效User.IsInRole returns 结果正确?
有没有办法重新加载 _Layout 页面以使其正确抓取数据?
控制器更改角色的代码
_userManager.RemoveFromRole(obj.strUserID, "Consumer");
_userManager.AddToRole(obj.strUserID, "Provider");
_context.SaveChanges();
return View("Success");
多个页面使用的共享布局视图
if (!User.IsInRole("Provider"))
{
<li>@Html.ActionLink("Become a Member", "Memmber", "CustProfile")</li>
}
有一次,我为用户删除并添加了新角色,我希望 _Layout.cstml 显示正确的链接,但它没有。如果我退出并重新登录,它工作正常。
有没有办法解决这个问题?
用户在注销前会被缓存,因此您将不得不重新为他们签名。请使用以下代码再次签名。另外,请确保重定向它们而不是查看,以便重新加载页面。
private ApplicationSignInManager _signInManager;
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ??
HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
}
private set
{
_signInManager = value;
}
}
更改角色后添加以下代码:
var userinDb = _context.Users.Find(UserID);
await SignInManager.SignInAsync(userinDb, true,false);
return RedirectToAction("Success");