Asp.net core Identity + identity server + angular 学习笔记 (第三篇)

register -> login 讲了

我们来讲讲 forgot password -> reset password  和 change password 吧

先来 forgot password

public async Task OnPostResetPassword(
    [FromServices] UserManager<IdentityUser> userManager
)
{
    var user = await userManager.FindByNameAsync("[email protected]");
    var token = await userManager.GeneratePasswordResetTokenAsync(user);
    await userManager.ResetPasswordAsync(user, token, newPassword: "123456");
}

上回有提到过, identity 用于 reset password 的 token 是长长, 所以只能发电子邮件给用户了. 

接着就是设定新密码。 

change password 是这样

public async Task OnPostChangePassword(
    [FromServices] UserManager<IdentityUser> userManager
)
{
    var user = await userManager.FindByNameAsync("[email protected]");
    await userManager.ChangePasswordAsync(user, currentPassword: "123456", newPassword: "654321");
}

identity 在 change password 时必须提供旧的密码才行. 这是比较 standard 的安全机制. 

那么如果项目是后台管理系统的话,往往 super admin 会有权限可以直接修改普通 admin 的密码, 这种情况下,我们应该采用 reset password 的方式去进行. 

登出是这样 

public async Task OnPostLogout(
    [FromServices] SignInManager<IdentityUser> signInManager
)
{
    await signInManager.SignOutAsync();
}

到这里一个基本的流程算是走完了. 

register -> confirm email -> forgot & reset password -> login -> change password -> logout 

除了上面说的 identity 还有几个重要的东西我觉得也很重要的.

- two factor (在我接触过的网站中, 有使用 two factor 的只有银行转账. 而且银行转账几乎是每一笔操作都需要一个 token, 然而 identity 的 two factor 是用于登入而已, 感觉也不适用. 再者我也没有接银行项目的可能, 所以暂时就不研究先了)

- facebook login (third party account login)

这个是一个很方便的功能, 用户不必注册,直接使用 facebook 账户登入.

早期是使用 oauth 2.0 来实现,目前应该是 OIDC Open ID Connect 

以前我花过不少时间去搞这个东西,后来发现手机年代, 用户是用 facebook app 登入的, 手机并没有 facebook 网站的登入. 也就是说如果项目使用这个 facebook login, 用户依然需要登入 facebook 

而大部分用户根本不记得密码.. 所以这个功能后来,我也就放弃了,况且网站还要依赖于 facebook api 需要长久维护也很麻烦丫。

- 扩展 user 属性 (这个就很重要,用户属性每个项目都不一样的丫. 等下会讲)

- 如果不用 identity,asp.net core 底层支持权限管理吗 ? 这个我也会讲一下。 

猜你喜欢

转载自www.cnblogs.com/keatkeat/p/10783171.html