Asp.net-Mvc
在 ASP.NET 身份框架中更改時刷新目前使用者的角色?
使用 VS 2013、標準 MVC 模板和身份提供程序框架
使用者已登錄,我有:
//.... UserManager.AddToRole(User.Identity.GetUserId(), "Members"); # Line X RedirectToAction("Index", "Members");成員控制器如下:
[Authorize(Roles="Members")] public class MembersController : Controller { // GET: Members public ActionResult Index() { return View(); } }執行 X 行後,我可以確認使用者已添加到表中
dbo.AspNetUserRoles。但是,使用者在到達成員控制器時無法通過角色檢查。User.IsInRole("Members")返回假。如果使用者註銷然後再次登錄,則對成員控制器的訪問將通過,即
User.IsInRole("Members")現在返回 true。有記憶體嗎?為什麼延遲?我該如何克服它?
我還嘗試將 Line X 的方法轉換為非同步方法並使用
UserManager.AddToRoleAsync. 同樣的延遲效果仍然存在。
使用者登錄時將身份資訊(角色,聲明)放入 cookie。由於使用者已經登錄,這行程式碼
UserManager.AddToRole(User.Identity.GetUserId(), "Members")將更新 db,但不會更新 cookie。您必須重新發布 cookie。嘗試添加
SignInManager.SignIn(user, false, false);(如果你沒有使用者,var user = UserManager.FindById(User.Identity.GetUserId()))之前RedirectToAction("Index", "Members");