Я создал приложение с ASP.NET MVC 1.0 и хочу использовать пользовательский метод (для администраторов) для создания пользователя. Я взял метод Register (в контроллере учетной записи) и переименовал его в Create. Затем я закомментировал строку FormsAuth.SignIn (userName, false); , чтобы новый пользователь не мог войти в систему.
Когда я заполняю форму создания пользователя, пользователь отлично добавляется, но он также входит в систему. Теперь вошли и я, и новый пользователь. Я знаю это, потому что моя страница ListUsers тестирует для user.IsOnline
ОБНОВЛЕНИЕ (2009-07-15 14:40): Я занимался Google и обнаружил, что User.IsOnline не очень надежен из-за HTTP-протокола без сохранения состояния. Примечание: если я перехожу на страницу UserDetails (которая заполняется с помощью MembershipUserAndRolesViewData), последний вход в систему отображается как NULL. Но моя страница ListUsers показывает дату входа в систему ... ???
public class AccountController : Controller
{
// ...
[Authorize(Roles = "Administrator")]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string userName, string email, string password, string confirmPassword)
{
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
if (ValidateRegistration(userName, email, password, confirmPassword))
{
// Attempt to register the user
MembershipCreateStatus createStatus = MembershipService.CreateUser(userName, password, email);
if (createStatus == MembershipCreateStatus.Success)
{
//FormsAuth.SignIn(userName, false); // createPersistentCookie
return RedirectToAction("ListUsers", "Account");
}
else
{
ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View();
}
}