首页 文章

OpenIDDict注册用户电子邮件确认

提问于
浏览
1

我正在使用带有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 回答

  • 1

    虽然您的解决方案有效,但您可能更愿意在调用 SignInManager.CanSignInAsync(user) 时配置ASP.NET核心标识以便为您进行"email confirmed"检查 . 您可以在Identity选项中配置它:

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

相关问题