I progetti MVC e Web API sono autenticati utilizzando l'identità dell'API Web MVC di ASP.NET (OWIN Security).Impedisci agli utenti senza email confermata di accedere all'identità dell'API Web MVC di ASP.NET (OWIN Security)
ho aggiunto una mail di conferma alla funzione Register
che funziona correttamente, ma non sono sicuro come controllare se emailConfirmed = true
prima di accedere perché non v'è una funzione di login esplicito sul Web API Identità, è implicita.
So che Microsoft ha una buona ragione per incapsulare profondamente la funzionalità di autorizzazione, ma non c'è un modo per raggiungerlo?
Si prega di avvisare.
Questa è la mia funzione di Registrazione:
[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();
}
Utilizzare l'autenticazione basata su token per web api. utilizzando il token è possibile associare una richiesta con un account utente. una volta verificato l'utente tramite il token, puoi accedere a 'user.emailconfirmed' proprio come faresti in MVC – Nkosi
Ho la funzionalità di accesso che funziona perfettamente usando il token, la mia domanda è dove dovrei aggiungere il controllo di- se' user.emailconfirmed 'perché non c'è una funzione di login sull'identità 2, è implicita .. – user3378165
Dovrebbe essere parte della tua funzionalità di accesso. Altrimenti puoi sempre controllarlo in un file di autenticazione – Nkosi