Реагировать на вход и выход из системы - PullRequest
0 голосов
/ 21 декабря 2018

Я использовал passport local для аутентификации пользователя на своем бэкэнде, когда пользователь успешно прошел аутентификацию. Сеанс сохраняется в базе данных.Во внешнем интерфейсе я использую реагирование, я могу успешно войти в систему на внешнем интерфейсе, и когда я проверил сеанс браузера, сеанс был сохранен, но проблема в том, что если я все еще могу вернуться на страницу входа, тогда как сеанс сохраняется в браузере

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вот как я могу обрабатывать операторы перенаправления или рендеринга локальной паспортной установки:

class App extends Component {
  constructor() {
    super();
    this.state = {
      loggedInUser: null
    };
  }

  componentWillMount() {
    this.fetchLoggedInUser();
  }

  fetchLoggedInUser = () => {
    fetchUser().then(res => {
      if (res.message) {
        this.setState({
          loggedInUser: false
        });
      } else {
        this.setState({
          loggedInUser: true,
          user: res
        });
      }
    });
  };

  isLoggedIn = () => {
    return this.state.loggedInUser;
  };

  isAdmin = () => { // You won't have this, but it's part of my route/middleware
    console.log(this.state.user.accessLevel);
    return this.state.user.accessLevel === "Admin";
  };

  initializeLoad = () => {
    if (this.state.loggedInUser === null) {
      return <h1>Loading...</h1>;
    } else {
      return (
        <React.Fragment>
          // Removed a bunch of routes to shorten things up.
          <Route
            exact
            path="/login"
            render={() =>
              // Determine if logged in // if not redirect
              // Some routes I pass in through props => <SomeView {...props} ... /> so I have access to the user.
              this.isLoggedIn() ? ( 
                <Redirect to="/profile" />
              ) : (
                <LoginView onAuthUpdate={this.handleAuthUpdate} />
              )
            }
          />
        </React.Fragment>
      );
    }
  };

  render() {
    return this.initializeLoad();
  }
}

export default App;
0 голосов
/ 21 декабря 2018

Не уверен, что понимаю.Вы можете проверить, существует ли сессия, и если она есть, не показывать страницу входа, а перенаправлять на домашнюю страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...