在 Authing 中,账号密码共分为以下三种形式:
- 邮箱 + 密码登录
- 用户名 + 密码登录
- 手机号 + 密码登录
当为用户提供账号密码形式的认证手段时,作为 IT 系统管理员或者开发者,你还需要实现以下功能:
- 重置密码:可以通过邮箱验证码或者手机号验证码找回密码;
- 修改密码:可以通过现有密码重置密码。
要使用 Authing 实现这些功能, 我们提供了三种不同的接入方式:
- 使用 Authing 托管登录页,无需一行代码,你可以通过 sample-sso.authing.cn 体验。
- 使用 Authing 提供的内嵌登录组件,可以集成到你的 Web 和移动端项目中,你不需要自己实现登录表单 UI。
- 使用 API & SDK,Authing 提供 RESTFul 和 GraphQL 两种形式的 API 以及 10 余种语言或框架的 SDK,你可以基于此自定义 UI 和认证流程。
使用托管登录页
注册
用户注册成功之后,系统会发送欢迎邮件到用户的邮箱:
你也可以在控制台设置 - 安全信息 - 用户池安全配置 中关闭注册发送欢迎邮件的选项,还可以在控制台设置 - 消息服务中修改默认欢迎邮件的模版。
用户注册成功之后,Authing 会发送验证邮箱邮件到用户的邮箱:
用户点击验证按钮即可验证邮箱。
登录
默认情况下,未验证邮箱的账号可以进行登录,你也可以在应用详情中修改次配置:
用户登录成功之后,将回调到你配置的回调链接,你可以在此获取用户信息,详情请见:使用 Authing 托管登录页完成认证 。
重置密码
你可以使用绑定的手机号或邮箱重置密码。
修改密码
用户可以在个人中心修改自己的密码:
使用内嵌登录组件
内嵌登录组件和在线托管登录页在样式和交互上基本一致,不同点在于在线托管登录页由 Authing 完全托管运维,与你的应用之间完全独立,而内嵌登录组件则可以嵌入到你的应用中。
详细使用方法请见:使用内嵌登录组件完成认证 。
使用 API & SDK
注册
选择语言
Java
使用用户池 ID(UserPool ID) 和应用 ID(AppID) 初始化 Java SDK 的 AuthenticationClient
:
import cn.authing.core.auth.AuthenticationClient;
AuthenticationClient authenticationClient = new AuthenticationClient("AUTHING_USERPOOL_ID");
authenticationClient.setAppId("AUTHING_APP_ID");
使用 registerByEmail
方法:
String email = "test@example.com";
String password = "123456";
User user = authenticationClient.registerByEmail(new RegisterByEmailInput(email, password)).execute();
登录
选择语言
Java
使用用户池 ID(UserPool ID) 和应用 ID(AppID) 初始化 Java SDK 的 AuthenticationClient
:
import cn.authing.core.auth.AuthenticationClient;
AuthenticationClient authenticationClient = new AuthenticationClient("AUTHING_USERPOOL_ID");
authenticationClient.setAppId("AUTHING_APP_ID");
使用 loginByEmail
方法:
String email = "test@example.com";
String password = "123456";
User user = authenticationClient.loginByEmail(new LoginByEmailInput(email, password)).execute();
重置密码
选择语言
Java
使用用户池 ID(UserPool ID) 和应用 ID(AppID) 初始化 Java SDK 的 AuthenticationClient
:
import cn.authing.core.auth.AuthenticationClient;
AuthenticationClient authenticationClient = new AuthenticationClient("AUTHING_USERPOOL_ID");
authenticationClient.setAppId("AUTHING_APP_ID");
使用手机号验证码重置密码:
String phone = "phone number";
String code = "1234";
String password = "123456";
authenticationClient.resetPasswordByPhoneCode(phone, code, password).execute();
使用邮箱验证码重置密码:
String email = "test@example.com";
String code = "1234";
String password = "123456";
authenticationClient.resetPasswordByEmailCode(email, code, password).execute();
修改密码
选择语言
Java
使用用户池 ID(UserPool ID) 和应用 ID(AppID) 初始化 Java SDK 的 AuthenticationClient
:
import cn.authing.core.auth.AuthenticationClient;
AuthenticationClient authenticationClient = new AuthenticationClient("AUTHING_USERPOOL_ID");
authenticationClient.setAppId("AUTHING_APP_ID");
如果用户之前没有设置过密码(比如由手机号、社会化登录等方式注册),不需要传入原始密码。
String newPassword = "123456";
User user = authenticationClient.updatePassword(newPassword).execute();
或者:
String oldPassword = "111111";
String newPassword = "123456";
User user = authenticationClient.updatePassword(newPassword, oldPassword).execute();