Ich habe folgende Login Beitrag Aktion in der Steuerung:Wie wird eine erfolgreiche Anmelde-Popup-Meldung angezeigt, wenn die erfolgreiche Anmeldung an eine Weiterleitungs-URL gesendet werden kann?
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
[Auditing]
public async Task<ActionResult> Login(LoginModel details, string returnUrl)
{
if (ModelState.IsValid)
{
AppUser user = await UserManager.FindAsync(details.Name,
details.Password);
if (user == null)
{
ModelState.AddModelError("", "Invalid name or password.");
}
else
{
ClaimsIdentity ident = await UserManager.CreateIdentityAsync(user,
DefaultAuthenticationTypes.ApplicationCookie);
ident.AddClaims(LocationClaimsProvider.GetClaims(ident));
ident.AddClaims(ClaimsRoles.CreateRolesFromClaims(ident));
AuthManager.SignOut();
AuthManager.SignIn(new AuthenticationProperties
{
IsPersistent = false
}, ident);
//Persist login into DB upon successful login
Loginrecord login = new Loginrecord();
login.Username = user.UserName;
login.SessionId = HttpContext.Session.SessionID;
Session["sessionid"] = HttpContext.Session.SessionID;
login.Date = DateTime.Now;
SQLLoginrecord sqlLogin = new SQLLoginrecord();
sqlLogin.PutOrPostLogin(login);
//End addition
return Redirect(returnUrl);
}
}
ViewBag.returnUrl = returnUrl;
return View(details);
}
Seit einer erfolgreichen Anmeldung von dieser Aktion von einer Zulassung erfordernden Seite gibt den Benutzer die URL in der Adressleiste des Browsers gehen kann, wie Kann ich eine Popup-Nachricht anzeigen, die auf eine erfolgreiche Anmeldung hinweist? Wenn ich mit dem ViewBag-Ansatz fortfahren und eine Success-Variable hinzufügen möchte, muss ich dann auf diesen ViewBag von jeder View (einschließlich einiger, die kein gemeinsames Layout haben) der Anwendung zugreifen, die eine Authentifizierung erfordert?
Danke. Das hat in meiner Bewerbung funktioniert. Ich musste die LoginMsg Dekoration zu LoginMsgFilter ändern (würde nicht anders kompilieren). Dann fügte ich einen cshtml im Shared-Ordner von Views hinzu: popup_login.cshtml wie folgt: @ { var message = TempData ["LoginMsg"] ?? string.Empty; } var message = '@message'; if (Nachricht) Alert (Nachricht); Und in jeder der Ansichten wollte ich das Popup erscheinen, ich @RenderPage ("~/Views/Shared/popup_login.cshtml") hinzugefügt. Ist das der beste Ansatz? –
ITWorker
Sie können es in das Layout einfügen. Siehe die aktualisierte Antwort. – Shyju