Ich habe ein MVC- und ein Web-API-Projekt, authentifiziert mit ASP.NET MVC Web API-Identität (OWIN-Sicherheit).Verhindern, dass sich Benutzer ohne bestätigte E-Mail anmelden ASP.NET MVC-Web-API-Identität (OWIN-Sicherheit)
Ich habe eine E-Mail Bestätigung an die Register
Funktion, die richtig, aber ich bin mir nicht sicher funktioniert, wie wenn emailConfirmed = true
vor der Anmeldung zu überprüfen, weil es auf Web-API-Identität nicht eine explizite Anmeldung Funktion ist, es implizite ist.
Ich weiß, dass Microsoft einen guten Grund hat, die Autorisierungsfunktionalität tief einzukapseln, aber gibt es keinen Weg, dies zu erreichen?
Bitte beraten.
Das ist mein Register Funktion:
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
try
{
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
var callbackUrl = new Uri(Url.Link("ConfirmEmailRoute", new { userId = user.Id, code = code }));
var email = new Email();
email.To = user.Email;
email.From = "[email protected]";
email.Subject = "Please confirm your account";
email.Body = "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>";
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
var data = JsonConvert.SerializeObject(email);
WebClient client = new WebClient();
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
var resp = client.UploadString(@"http:...", data);
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
return Ok();
}
Token-basierte Authentifizierung für Web-API verwenden. Mit dem Token können Sie eine Anfrage mit einem Benutzerkonto verknüpfen. Sobald Sie den Benutzer über Token verifiziert haben, können Sie dann auf "user.emailconfirmed" genauso wie in MVC zugreifen. – Nkosi
Ich habe die Anmeldefunktion, die perfekt mit Token funktioniert, meine Frage ist, wo soll ich die Überprüfung von - wenn 'user.emailconfirmed hinzufügen 'weil es keine Login-Funktion für Identität 2 gibt, ist es implizit. – user3378165
Es sollte Teil Ihrer Login-Funktionalität sein. Andernfalls können Sie es immer in einem Authentifizierungsfiler überprüfen. – Nkosi