상속: AuthenticationExample.Web.Model.Entity
		public ActionResult Create(UserInputModel userInputModel)
		{
			if (_repository.GetAll<User>().Any(x => x.Username == userInputModel.Username))
			{
				ModelState.AddModelError("Username", "Username is already in use");
			}

			if (ModelState.IsValid)
			{
				var user = new User
				{
					Id = Guid.NewGuid(),
					Username = userInputModel.Username,
					Password = HashPassword(userInputModel.Password),
				};

				_repository.SaveOrUpdate(user);

				_authenticator.SetCookie(user.Username);

				return RedirectToAction("Index", "Home");
			}

			return View("New", userInputModel);
		}
		public ActionResult Create(UserInputModel userInputModel)
		{
            _repository = new InMemoryRepository();
            _authenticator = new CookieAuthenticator();

			if (_repository.GetAll<User>().Any(x => x.Username == userInputModel.Username))
			{
				ModelState.AddModelError("Username", "Username is already in use");
			}

			if (ModelState.IsValid)
			{
				var user = new User
				{
					Id = Guid.NewGuid(),
					Username = userInputModel.Username,
					Password = HashPassword(userInputModel.Password),
				};

				_repository.SaveOrUpdate(user);

                _authenticator.SetCookie("72201781859E67D4F633C34381EFE4BC928656AEE324A4B00CADA968ACD6CF33047E47479B0B68050FF4A0DB13688B5C78DAFDF53252A94E7F1D7B58A6FFD95D747F3D3AA761DECA7B6358A2E78B85D868833A9420316BDA8A5A0425D543AC1148CB69B902195C20065446A5E5F7A8E4C94A04A22304680E1211F00A12DF5E8777A343D08D0F8C0A3BFC471381E9B070E0F0608ADAEBCA8E233A21251BF57A03B52C1F03B7169CFC7C98216E7217EA649C4EDBD35E07F11A2444D40BE303BFFA28BAA921CDCC298D09A6E0297ED7D6E8");

				return RedirectToAction("Index", "Home");
			}

			return View("New", userInputModel);
		}
		public ActionResult Complete(CompleteRegistrationModel completeRegistrationModel)
		{
			if (completeRegistrationModel == null) completeRegistrationModel = new CompleteRegistrationModel();

			if (Request.HttpMethod == "GET")
			{
				return View(completeRegistrationModel);
			}

			if (Request.HttpMethod != "POST")
			{
				return new HttpStatusCodeResult((int)HttpStatusCode.MethodNotAllowed);
			}

			if (ModelState.IsValid)
			{
				var registrations = from r in _repository.GetAll<Registration>()
									where
										r.Username == completeRegistrationModel.Username
										&& r.EmailAddress == completeRegistrationModel.EmailAddress
									orderby r.Expires descending
									select r;

				var registration = registrations.FirstOrDefault();

				if (RegistrationIsValid(registration, completeRegistrationModel))
				{
					var user = new User
								   {
									   Id = Guid.NewGuid(),
									   Username = registration.Username,
									   EmailAddress = registration.EmailAddress,
									   Password = registration.Password
								   };

					_repository.SaveOrUpdate(user);

					_authenticator.SetCookie(user.Username);

					return RedirectToAction("Index", "Home");
				}
			}

			return View(completeRegistrationModel);
		}