在我的ASP.net MVC項目中,我有(和其他角色)版主和用戶。我想讓主持人選擇「以用戶身份查看當前頁面」。模擬一個請求(Asp.net MVC)
我的方法是創建一個ActionFilterAttribute和超載OnActionExecuting & OnResultExecuted的頁面,然後呈現給定用戶。
第一個想法有一個與角色變戲法:
OnActionExecuting {
... //various checks, if role exist, if user want to switch
var tempRoles = Roles.getRolesForUser(user);
filterContext.HttpContext.Items["tempRole"] = tempRoles;
Roles.RemoveUserFromRoles(user, tempRoles)
Roles.AddUserToRole(user, targetRole);
}
然後
OnResultExecuted {
//if switched view
{
Roles.RemoveUserFromRole(user,targetRole)
Roles.AddUserToRoles(filterContext.HttpContext.Items["tempRole"])
}
這工作,但在最壞的情況下的角色都沒有了,所以我寧願不觸摸他們...
我的第二個想法是創建一個虛擬用戶添加他到userroles簽署主持人進入這個帳戶與FormsAuthentication.SetAuthCookie(dummyUser,真),並恢復e OnResultExecuted,所以在最壞的情況下,用戶處於dummyRole(他可以註銷)並且dummyUser位於數據庫中。
經過調試和研究後,我意識到SetAuthCookie需要重定向才能生效 - 所以它不能以這種方式工作。
的問題:
- 有沒有辦法迫使SetAuthCookie接觸到沒有重定向
- 任何其他建議影響/方法如何做到這一點「看到其他用戶頁面」?
- 如果我的第一個想法是唯一的解決方案,我該如何使它萬無一失?