我正在使用带有OpenIDDict的ASP.NET MVC Core。我为OpenIDDict使用了带有cookie身份验证和JWT的视图。除了下面的场景之外,一切都运行得很好:
身份更改为首先向用户发送确认电子邮件,以确认其电子邮件地址。用户通过电子邮件获取链接并点击它。然后他们登录。很简单。在此期间,他们无法访问任何页面。
但我注意到,使用postman,他们可以通过OpenIDDict通过APi访问解决方案。他们仍然会得到授权。当他们获得授权时,他们就可以访问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)))
{成功了!这就是我自己的问题go...answered。Mya将来帮助别人
发布于 2017-01-27 10:58:10
虽然您的解决方案有效,但您可能更喜欢配置ASP.NET核心身份,以便在调用SignInManager.CanSignInAsync(user)时为您检查“已确认电子邮件”。您可以在标识选项中对其进行配置:
services.AddIdentity<ApplicationUser, IdentityRole>(options => {
options.SignIn.RequireConfirmedEmail = true;
});https://stackoverflow.com/questions/41878402
复制相似问题