У вас есть 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
в модуле .Net Users в диспетчере IIS или на собственной пользовательской веб-странице для утверждения пользователей.
Вы все еще можете установить добавление пользователя к соответствующей роли при создании пользователя без необходимости входа в него:
if (!Roles.IsUserInRole(RegisterUser.UserName, "Test"))
{
Roles.AddUserToRole(RegisterUser.UserName, "Test");
}