在 .Net Core 5.0 中忘记密码

Forgot password in .Net Core 5.0

我的登录和注册方法运行良好,当用户尝试登录或注销时我使用 Claim。 我看到很多 ForgotMyPassword 页面的例子,但所有的例子都使用 private readonly UserManager<IdentityUser> _userManager; 基于 Microsoft.AspNetCore.Identity; 。我可以在不使用 UserManager 的情况下执行 ForgotMyPassword 操作吗 ??我要求基于 Claim 的身份验证和授权是我在我的项目中所需要的。 我可以同时使用它们吗,如果可以的话我该怎么做? 如果有人解释清楚就太好了,问候

当用户注册时,他们的信息将被添加到数据库中。您可以将用户的注册电子邮件传递给 ForgotMyPassword 操作。然后发送一个验证码到邮箱或者发送一个link让用户重定向到另一个页面重设密码。让用户完成修改密码。

认证和授权都可以,分别负责不同的业务。认证有cookie、jwt等认证服务。 cookie 身份验证是内置组件。身份已经整合了它。你应该了解一下。

另一个服务是授权。授权服务只有在认证成功后才起作用。它有多种授权方式,关于claim-based授权,当一个用户访问授权的动作时,会经过中间件app.UseAuthorization()。该中间件将检查是否存在与操作策略的声明相对应的声明。因为你在启动的时候配置好了。

services.AddAuthorization(options=>
        {
            options.AddPolicy("Policy1",policy=>
            {
                policy.RequireClaim("claim1",new string[] {"value1","value2" });
            });
        });

关于授权操作。

    [Authorize(Policy = "Policy1")]
    public IActionResult get()
    {
        return Ok();
    }

在这种情况下,用户应该拥有声明 Claim("claim1","value1")Claim("claim1","value2")