以下都是基于这里关于这个问题的讨论:https ://github.com/aws-amplify/amplify-js/issues/2552
有一种方法可以根据您在问题中提出的内容,使用 Amplify 轻松添加“记住我”功能。但是,请记住,我提出的方法使用 localStorage 与 sessionStorage,这是 OWASP 不鼓励的(在这里讨论:本地存储可以被认为是安全的吗?,并在此处记录:https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet。 html ).
然而,它是一个简单的解决方案,用于测试和让某些东西快速运行(只是不要忘记在上线之前保护它——著名的遗言哈哈哈)。
以下是步骤:
- 使用您要设置的所有配置创建一个 awsConfig 对象,如放大文档中所述:https ://docs.amplify.aws/lib/auth/start/q/platform/js/#re-use-existing-authentication -资源
// awsConfig.tsx module:
const awsConfig = {
// REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID
identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab',
// REQUIRED - Amazon Cognito Region
region: 'XX-XXXX-X',
//...etc...
//storage: window.sessionStorage OR .localStorage <--- LEAVE THIS OUT OF THIS CONFIG
}
export default awsConfig
- 进入您的 App.tsx 或 App.js,在 App 函数中,调用 Auth.configure(),并将 awsConfig 对象从上面的 #1 传递给它:
// App.tsx module:
import { Auth } from '@aws-amplify/auth'
import awsConfig from './awsConfig'
//...etc...
const App: React.FC = () => {
Auth.configure(awsConfig)
//...etc...
- 进入你的登录组件,检查是否勾选了“记住我”复选框,然后重新调用 Auth.configure() 函数,但这次也传递了首选存储参数:
//Login.tsx module
import { Auth } from '@aws-amplify/auth'
import awsConfig from './awsConfig'
//...etc...
rememberLogin
? Auth.configure({ ...awsConfig, storage: localStorage })
: Auth.configure({ ...awsConfig, storage: sessionStorage });
//...etc...
try {
const awsUser = await Auth.signIn(username, password);
//...etc...
- 没有第 4 步……就是这样……你已经完成了……