Ich bin neu in der ASP.Net-Webentwicklung und stehe bei der Handhabung der Ausnahmen fest, wenn die Anmeldung eingeschränkt ist. Frage: Ich habe Besitzer anmelden und Mieter anmelden. Jetzt Besitzer kann die Anmeldung für Mieter beschränken. Aber wenn die Anmeldung eingeschränkt ist, möchte ich dem Mieter zeigen, dass ihre Berechtigung korrekt ist, aber die Anmeldung ist eingeschränkt.So geben Sie die korrekte Fehlermeldung an den Benutzer zurück, wenn die Anmeldung eingeschränkt ist
Unten ist, was ich bis jetzt versucht habe.
-Controller
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LoginSubmit(LoginMV userData)
{
if (userData != null)
{
UserMV authenticatedUser = AuthenticateTenant(userData.Username, userData.Password);
if (authenticatedUser == null)
{
ModelState.AddModelError("Invalid credentials");
}
else
{
//Do the login
}
}
return View("Login", userData);
}
Benutzerdaten von API
private static UserMV AuthenticateTenant(string username, string password)
{
Res response = mdlAPI.AuthenticateTenant(username, password);
try{
response.Validate(username);
}
UserMV result = new UserMV()
{
DisplayName = response.objTenant.LastName + ", " + response.objTenant.FirstName
};
return result;
}
FYI
API Antwort ist response.ResultCode = Restricted
.
Validate
public static void Validate(this Res response, string username)
{
if (response.ResultCode != Enumerations.AuthResultCode.Successful)
{
string additionalDetails = "";
if (response.ResultCode == Enumerations.AuthResultCode.Restricted)
{
additionalDetails = "Login Restricted.";
}
throw new ValidationException(additionalDetails);
}
}
So in dem obigen Verfahren additionalDetails
auf "Login Restrcited" fertig und die Validation aufgerufen. Da die Ausnahme ausgelöst wird, wird das UserMV-Objekt auch nicht in AuthenticateTenant function
erstellt.
Validation
public class ValidationException : Exception
{
public ValidationException(string message) : base (message)
{ }
}
Nachdem all dies die Folge von Code kehrt zum Controller. Da userMV NULL ist, wird die angezeigte Fehlermeldung "Ungültige Anmeldeinformationen" angezeigt. Habe ich etwas verpasst?
Ich bekomme die Ausnahme ordnungsgemäß in der ValidationException-Klasse. Muss ich etwas anderes tun, damit die Ausnahme dem Benutzer angezeigt wird? Ich bin ein Anfänger, also entschuldige meine Programmierstandards. Bitte zeigen Sie mir, was ich noch tun muss, um dem Mieter die "zusätzlichen Details" anzuzeigen.
View File:
@using (Html.BeginForm("LoginSubmit", "Security", FormMethod.Post, new { id = "simLogin" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal-width-inherit">
@Html.HiddenFor(model => model.ReturnUrl)
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.ValidationMessageFor(model => model.Username, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Username, htmlAttributes: new { @class = "control-label ignoreSpacing col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Username, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label ignoreSpacing col-md-2" })
<div class="col-md-10">
@Html.PasswordFor(model => model.Password, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Login" class="btn btn-default" />
</div>
</div>
</div>
}
Woher nehmen Sie die 'ValidationException'? – stuartd
Ich weiß nicht, wie ich das fangen soll. Kannst du mich ein wenig führen? Ich würde das wirklich zu schätzen wissen. – Unbreakable
Muss ich Änderungen in meinem cshtml vornehmen, um es zu fangen? Ich bin ein Anfänger, also kannst du es gut ausarbeiten. – Unbreakable