首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >aws-amplify/ui-reac,可以在登录后重定向

aws-amplify/ui-reac,可以在登录后重定向
EN

Stack Overflow用户
提问于 2020-11-07 04:42:55
回答 3查看 1.5K关注 0票数 4

你好,我正在尝试使用AWS-amplify和react-dom登录后重定向和更改路径

我需要在用户登录后将它们重定向到localhost/main main,因为它在localhost/

如果任何人有一个想法可以帮助我,感谢我的代码:

代码语言:javascript
复制
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;
EN

回答 3

Stack Overflow用户

发布于 2020-11-15 07:48:35

在搜索这个问题后,解决方案是使用AUTH.signIn()Auth.signUp()设计自己的登录和注册,然后可以重定向。

票数 0
EN

Stack Overflow用户

发布于 2021-01-24 22:38:34

我使用的是angular,但我认为它可能类似

代码语言:javascript
复制
  onAuthUIStateChange((authState, authData) => {
            console.log('LoginPage', authState, authData);
            if (this.authState == AuthState.SignedIn) {
                this.router.navigate(['']);
            }
        });
票数 0
EN

Stack Overflow用户

发布于 2021-05-03 02:31:18

我通常这样做:

authentication.

  • At

  • 使用<AwsAuthenticator>包装<router>,您将使用该组件检查并要求使用typescript(如果不使用typescript,则为js ),您将执行以下操作:<AwsAuthenticator> AwsAuthenticator.tsx

代码语言:javascript
复制
// @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}
    />
  );
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64721339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档