에 MVC 웹 API ID (OWIN 보안)를 사용하여 인증 된 MVC 및 웹 API 프로젝트가 있습니다. 확인 이메일이없는 사용자가 ASP.NET MVC 웹 API ID (OWIN 보안)
나는 제대로 작동Register
기능에 대한 확인 이메일을 추가했지만
이 암시의, 어떤 웹 API 신원에 명시 적 로그인 기능이 있기 때문에 나는 로그인하기 전에
emailConfirmed = true
있는지 확인하는 방법을 잘 모르겠어요 없습니다.
Microsoft는 인증 기능을 깊이 캡슐화 할 좋은 이유가 있음을 알고 있지만이를 달성 할 방법이없는 것은 알고 있습니까?
알려 주시기 바랍니다. 연구의 많은 내가 대답을 발견 한 후
[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();
}
웹 API에 토큰 기반 인증을 사용합니다. 토큰을 사용하여 요청을 사용자 계정과 연관시킬 수 있습니다. 일단 토큰을 통해 사용자를 확인하면 MVC에서와 마찬가지로'user.emailconfirmed'에 액세스 할 수 있습니다 – Nkosi
토큰을 사용하여 완벽하게 작동하는 로그인 기능이 있습니다. 내 질문에 'user.emailconfirmed 'ID 2에 로그인 기능이 없으므로 암시 적입니다. – user3378165
로그인 기능의 일부 여야합니다. 그렇지 않으면 항상 인증 파일러에서 확인할 수 있습니다. – Nkosi