Ich versuche, den Benutzer zu einer anderen Aktion umzuleiten, wenn seine E-Mail-Adresse nicht bestätigt wurde. Die Sache ist, ich möchte nicht, dass sie ausgeloggt werden, ich möchte sie nur umleiten. Wenn ich dies in OnAuthorization für den Controller mache, leitet es wie erwartet weiter, aber der Benutzer wird nicht authentifiziert. Ich bin mir nicht sicher, warum das so ist. Mein Code sieht so aus:MVC-Umleitung in OnAuthorization bewirkt, dass die Autorisierung fehlschlägt
Hinweis: Ich habe unnötigen Code entfernt, um es klarer zu machen. _applicationService.CurrentUser wird mit dem aktuellen Benutzer gefüllt - und der Benutzer wurde korrekt authentifiziert, wenn er an diesen Punkt gelangt. Aber nach der Weiterleitung ist der Benutzer nicht mehr authentifiziert.
Wie kann ich diese Weiterleitung erreichen, ohne die integrierte Benutzerautorisierung zu beeinträchtigen?
Ich habe versucht, meinen Code in OnActionExecuting zu setzen, und ich habe auch versucht, es in einem benutzerdefinierten ActionFilterAttribute zu implementieren, aber wo auch immer ich diese Umleitung einfüge, verhindert es den 'Benutzer' (zB: System.Security.Principal .IPrincipal Controller.User) wird authentifiziert.
Was fehlt mir hier? Hoffe, das macht Sinn. Jede Hilfe wird sehr geschätzt.
Als Reaktion auf Darins Anfrage für die Anmeldungs Aktion:
[HttpPost]
[AllowAnonymous]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
string errorMessage = "The username or password is incorrect";
if (ModelState.IsValid)
{
if (_contextExecutor.ExecuteContextForModel<LoginContextModel, bool>(new LoginContextModel(){
LoginViewModel = model
}))
{
ViewBag.CurrentUser = _applicationService.CurrentUser;
_formsAuthenticationService.SetAuthCookie(model.LoginEmailAddress, model.RememberMe);
if (_applicationService.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home").Success("Thank you for logging in.");
}
else
{
errorMessage = "Email address not found or invalid password.";
}
}
return View(model).Error(errorMessage);
}
Können Sie zeigen, wie Sie den Benutzer authentifizieren - Ihre 'LogOn' Aktion? –
@DarinDimitrov - Ich habe meine Login-Aktion wie gewünscht hinzugefügt. – soupy1976
Genau das habe ich gesucht! Gespeichert viel Zeit – JosephDoggie