在AWS Cognito中,可以使用状态参数来区分用户是正在注册还是登录。当用户点击注册链接时,可以将状态参数设置为“signup”,而当用户点击登录链接时,可以将状态参数设置为“login”。
以下是使用Node.js的示例代码:
const AmazonCognitoIdentity = require('amazon-cognito-identity-js');
// 设置Cognito用户池属性 const poolData = { UserPoolId: 'YOUR_USER_POOL_ID', ClientId: 'YOUR_APP_CLIENT_ID' }; const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
// 将注册状态参数添加到参数对象中 const signUpURL = userPool.client.generateSignUpUrl({ clientId: poolData.ClientId, redirectUri: 'YOUR_CALLBACK_URL', state: 'signup' });
// 将登录状态参数添加到参数对象中 const signInURL = userPool.client.generateSignInUrl({ clientId: poolData.ClientId, redirectUri: 'YOUR_CALLBACK_URL', state: 'login' });
console.log('注册链接:', signUpURL); console.log('登录链接:', signInURL);
当用户访问回调URL时,可以检查状态参数值来确定用户是注册还是登录。示例代码如下:
// 从回调URL中获取状态参数 const state = req.query.state;
if (state === 'signup') { // 用户正在注册 console.log('注册成功!'); // 这里可以执行其他操作,例如向数据库添加标识符等。 } else if (state === 'login') { // 用户正在登录 console.log('登录成功!'); // 这里可以执行其他操作,例如将用户重定向到另一个页面等。 } else { // 状态参数值无效 console.log('无效的状态参数值!'); }