$ npm i @@passwordlessdev/passwordless-nodejs
const options: PasswordlessOptions = {
baseUrl: 'https://v4.passwordless.dev'
};
this._passwordlessClient = new PasswordlessClient('demo:secret:f831e39c29e64b77aba547478a4b3ec6', options);
const options: PasswordlessOptions = {};
this._passwordlessClient = new PasswordlessClient('demo:secret:f831e39c29e64b77aba547478a4b3ec6', options);
signup = async (request: express.Request, response: express.Response) => {
const signupRequest: SignupRequest = request.body;
const repository: UserRepository = new UserRepository();
let id: string = null;
try {
// 首先,在数据库中创建用户。我们将使用 id 来注册令牌。
// 这样我们就知道凭证属于哪个用户。
id = repository.create(signupRequest.username, signupRequest.firstName, signupRequest.lastName);
} catch {
// 创建用户失败,进行错误处理。
} finally {
repository.close();
}
if (!id) {
// 我们无法创建用户,因此不要继续创建令牌。
response.send(400);
}
let registerOptions = new RegisterOptions();
registerOptions.userId = id;
registerOptions.username = signupRequest.username;
// 我们将使用我们的 deviceName 作为别名。但使用别名是完全可选的。
if (signupRequest.deviceName) {
registerOptions.aliases = new Array(1);
registerOptions.aliases[0] = signupRequest.deviceName;
}
registerOptions.discoverable = true;
// 现在调用 Passwordless.dev 来注册一个新的令牌。
const token: RegisterTokenResponse = await this._passwordlessClient.createRegisterToken(registerOptions);
// 将令牌返回给客户端。
response.send(token);
}
signin = async (request: express.Request, response: express.Response) => {
try {
const token: string = request.query.token as string;
// 首先检查令牌是否有效,以及是否找到匹配的用户。
const verifiedUser: VerifiedUser = await this._passwordlessClient.verifyToken(token);
// 如果找到用户并且令牌有效,您可以继续登录该用户。
if (verifiedUser && verifiedUser.success === true) {
// 如果您想为在客户端呈现的 SPA 构建 JWT 令牌,您可以在此处执行此操作。
response.send(JSON.stringify(verifiedUser));
return;
}
} catch (error) {
console.error(error.message);
}
response.send(401);
}