OpenIDDict注册用户电子邮件确认

时间:2017-01-26 16:34:49

标签: asp.net-core openid-connect openiddict

我正在使用带有OpenIDDict的ASP.NET MVC Core。我正在使用带有cookie身份验证的视图和用于OpenIDDict的JWT。除了以下场景外,一切都很完美:

更改身份以首先向用户发送确认电子邮件以确认其电子邮件地址。用户通过电子邮件获取链接并单击它。然后他们登录。简单。与此同时,他们无法访问任何页面。

但是我注意到,使用邮递员,他们可以通过OpenIDDict通过APi'S访问解决方案。他们仍然获得授权。当他们获得授权时,他们可以访问API。

刚刚写完这篇文章我已经放弃了大脑,我可以在交换行动中简单地将代码引入AuthenticationController:

public async Task<IActionResult> Exchange(OpenIdConnectRequest request)
    {
        Debug.Assert(request.IsTokenRequest(),
            "The OpenIddict binder for ASP.NET Core MVC is not registered. " +
            "Make sure services.AddOpenIddict().AddMvcBinders() is correctly called.");

        if (request.IsPasswordGrantType())
        {
            var user = await _userManager.FindByNameAsync(request.Username);
            //if (user == null)
            if (user == null || !(await _userManager.IsEmailConfirmedAsync(user)))
            {

工作!你去了......回答了我自己的问题。 Mya将来帮助别人

1 个答案:

答案 0 :(得分:2)

虽然您的解决方案有效,但在调用SignInManager.CanSignInAsync(user)时,您可能更愿意配置ASP.NET核心标识以使“电子邮件已确认”检查。您可以在身份选项中配置它:

services.AddIdentity<ApplicationUser, IdentityRole>(options => {
    options.SignIn.RequireConfirmedEmail = true;
});