2011-07-18 50 views
0

我在站點管理員的Web應用程序中設置FormsAuthentication。這個問題涉及:Using FormsAuthentication - 我的問題現在是;當管理員已經「成爲現有用戶」時,WebSecurity.CurrentUserId是否充滿了他已成爲用戶的當前用戶ID,還是仍然包含管理員的當前用戶ID?在ASP.NET WebPages中使用FormsAuthentication

如果是後者,我們如何才能讓WebSecurity.CurrentUserId返回他當前模擬的用戶的用戶ID?

回答

2
@{ 
    if(Roles.IsUserInRole("Administrator")) 
    { 
     FormsAuthentication.SetAuthCookie( 
      "[email protected]", 
      false 
     ); 
     Response.Redirect("~/Account/Page.cshtml"); 
    } 
} 
<!DOCTYPE html> 
<html lang="en"> 
    <body> 
     <p>You are now no longer an "admin", but user: @WebSecurity.CurrentUserId</p> 
    </body> 
</html> 

上述代碼有效。 WebSecurity.CurrentUserId的輸出不再是管理員的用戶標識,而是他剛剛成爲的用戶的標識。

示例:如果管理員的用戶ID是3,和用戶名的用戶ID:[email protected]是:56,然後用上面的代碼,WebSecurity.CurrentUserId的輸出變成56

+1

因此,如果您需要保留此*爲*管理員用戶的事實,則需要獨立跟蹤。 – GalacticCowboy

+0

@GalacticCowboy - 感謝您補充一點,我忘了指出這一點;這也是我在這個問題中與我之前提到的問題有關的評論。 – bendr

1

FormsAuthentication.SetAuthCookie(string, bool);可用於登錄/註銷特定用戶,其中用戶名和布爾值爲字符串,用於登錄/註銷。

FormsAuthentication.SetAuthCookie("user", true);將登錄用戶,WebSecurity將有其用戶ID。

FormsAuthentication.SetAuthCookie("admin", false);將註銷管理員並將從WebSecurity中刪除其用戶ID。

相關問題