我正在使用带有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 回答
虽然您的解决方案有效,但您可能更愿意在调用
SignInManager.CanSignInAsync(user)
时配置ASP.NET核心标识以便为您进行"email confirmed"检查 . 您可以在Identity选项中配置它: