Ich habe gerade ein ASP.MVC-Projekt erstellt und möchte eine temporäre Anmeldung bereitstellen (nennen wir es Gast-Login). Dies sollte keine Registrierung erfordern und ich möchte die Erstellung eines Datenbankeintrags für diesen Benutzer vermeiden.SignInManager.SignIn mit nicht existierendem Benutzer
I erweitert die Standard-Login-Aktion des Account von:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
return View(model);
if (model.GuestLogin) {
var user = UserManager.FindByEmail(model.Email);
if (user != null) {
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
var appUser = new ApplicationUser() { Email = model.Email, UserName = model.Email, Id = Guid.NewGuid().ToString() };
//var creationResult = UserManager.Create(appUser);
SignInManager.SignIn(appUser, false, model.RememberMe);
return RedirectToLocal(returnUrl);
}
//common login stuff ...
}
Der SignIn-Aufruf schlägt fehl mit:
System.InvalidOperationException: UserId nicht gefunden.
Ist es möglich, dies irgendwie zu archivieren, oder nicht?
Dank im Voraus