Asp.net

FormsAuthentication.SetAuthCookie 有什麼作用

  • August 20, 2011

我正在使用一個 createuserwizard 控制項。在 CreatedUser 事件中,我放置了此程式碼以將使用者添加到角色。

   protected void RegisterUser_CreatedUser(object sender, EventArgs e)
   {
       FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);


       if (!Roles.IsUserInRole("Test"))
       {
           var User= Membership.GetUser();
           Roles.AddUserToRole(User.UserName, "Test");
       }

       string continueUrl = RegisterUser.ContinueDestinationPageUrl;

       if (String.IsNullOrEmpty(continueUrl))
       {
           continueUrl = "~/";
       }
       Response.Redirect(continueUrl);
   }

我也想知道FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);它的含義和用途以及為什麼Membership.GetUser()為空。

你有LoginCreatedUser="false"DisableCreatedUser="true"在你的CreateUserWizard

這些將阻止使用者立即登錄,並導致Membership.GetUser()返回 null,因為使用者目前未登錄。

如果您希望使用者立即登錄,LoginCreatedUser="true"DisableCreatedUser="false"在您的CreateUserWizard. 那應該可以使您目前的程式碼正常工作。

FormsAuthentication.SetAuthCookie()設置瀏覽器 cookie 以啟動使用者會話。每次將頁面發佈到伺服器時,它都會讓使用者保持登錄狀態。createPersistentCookie創建一個在瀏覽器關閉時不會過期的持久 cookie,因此使用者可以返回站點並自動登錄。它應該基於使用者是否選中了登錄表單上的“記住我”複選框。預設情況下,它在表單上不可用CreateUserWizard,但如果您願意,您可以在模板中為它添加一個複選框。

如果您不想讓使用者自動登錄,FormsAuthentication.SetAuthCookie()請從程式碼中刪除該行,並CreateUserWizard適當地設置屬性。如果您想在使用者登錄之前批准使用者,請設置DisableCreatedUser="true". 這將阻止他們登錄,直到您IsApproved=true從 IIS 管理器中的 .Net 使用者模組設置使用者,或者您擁有自定義網頁來批准使用者。

您仍然可以在創建使用者時設置將使用者添加到適當的角色,而無需登錄:

if (!Roles.IsUserInRole(RegisterUser.UserName, "Test"))
{  
   Roles.AddUserToRole(RegisterUser.UserName, "Test");
}

引用自:https://stackoverflow.com/questions/7134638