FormsAuthentication.SetAuthCookie 有什麼作用
我正在使用一個 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"); }