你好,我正在尝试使用AWS-amplify和react-dom登录后重定向和更改路径
我需要在用户登录后将它们重定向到localhost/main main,因为它在localhost/中
如果任何人有一个想法可以帮助我,感谢我的代码:
import React from "react";
import "./App.css";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import Amplify from "aws-amplify";
import {
AmplifyAuthenticator,
AmplifySignUp,
} from "@aws-amplify/ui-react";
import { AuthState, onAuthUIStateChange } from "@aws-amplify/ui-components";
import awsconfig from "./aws-exports";
import Main from "./main";
Amplify.configure(awsconfig);
const AuthStateApp = () => {
const [authState, setAuthState] = React.useState();
const [user, setUser] = React.useState();
React.useEffect(() => {
return onAuthUIStateChange((nextAuthState, authData) => {
setAuthState(nextAuthState);
setUser(authData);
});
}, []);
return authState === AuthState.SignedIn && user ? (
<Router>
<Switch>
<Route path="/main">
<Main />
</Route>
</Switch>
</Router>
) : (
<AmplifyAuthenticator>
<AmplifySignUp
slot="sign-up"
formFields={[
{ type: "username" },
{ type: "password" },
{ type: "email" },
]}
/>
</AmplifyAuthenticator>
);
};
export default AuthStateApp;发布于 2020-11-15 07:48:35
在搜索这个问题后,解决方案是使用AUTH.signIn()和Auth.signUp()设计自己的登录和注册,然后可以重定向。
发布于 2021-01-24 22:38:34
我使用的是angular,但我认为它可能类似
onAuthUIStateChange((authState, authData) => {
console.log('LoginPage', authState, authData);
if (this.authState == AuthState.SignedIn) {
this.router.navigate(['']);
}
});发布于 2021-05-03 02:31:18
我通常这样做:
authentication.
<AwsAuthenticator>包装<router>,您将使用该组件检查并要求使用typescript(如果不使用typescript,则为js ),您将执行以下操作:<AwsAuthenticator> AwsAuthenticator.tsx// @ts-ignore
import {Authenticator} from 'aws-amplify-react-native';
import React, {ReactNode, useState} from 'react';
import {signUpConfig} from '@app/components/Authentication/SignUpForm.config';
interface AwsAuthenticatorProps {
children: ReactNode;
}
export const AwsAuthenticator = ({children}: AwsAuthenticatorProps) => {
const [loggedIn, setLoggedIn] = useState<boolean>(false);
// possible states: signIn | signedIn | signedOut
const handleAuthStateChange = (authState: string) =>
authState === 'signedIn' ? setLoggedIn(true) : setLoggedIn(false);
return loggedIn ? (
<>{children}</>
) : (
<Authenticator
usernameAttributes="email"
signUpConfig={signUpConfig}
onStateChange={handleAuthStateChange}
/>
);
};https://stackoverflow.com/questions/64721339
复制相似问题