使用React上下文的用户身份验证

dya26

我不确定为什么这行不通。login调用函数后,除line以外的所有东西都起作用user = res.headers['access-token'];user仍未定义。我的身份验证系统基于以下内容:https : //kentcdodds.com/blog/authentication-in-react-applications

import React from 'react';
import axios from 'axios';

const AuthContext = React.createContext();
const url = 'http://localhost:3001/auth/sign_in';

function AuthProvider(props) {
  let user;

  async function login(e, email, password) {
    e.preventDefault();
    try {
      const res = await axios({
        method: 'post',
        url: url,
        data: JSON.stringify({ email, password }),
        headers: { 'Content-Type': 'application/json' }
      });
      localStorage.setItem('token', res.headers['access-token']);
      localStorage.setItem('client', res.headers['client']);
      localStorage.setItem('uid', res.headers['uid']);
      user = res.headers['access-token'];
      console.log('Logged in');
    } catch (err) {
      console.log(err);
    }
  }

  return (
    <AuthContext.Provider
      value={{ user, login, logout, register }}
      {...props}
    />
  );
}

const useAuth = () => React.useContext(AuthContext);

export { AuthProvider, useAuth };
dya26

原来我要做的就是使用useState

function AuthProvider(props) {
  const [user, setUser] = useState();

  async function login(e, email, password) {
    e.preventDefault();
    try {
      const res = await axios({
        method: 'post',
        url: url,
        data: JSON.stringify({ email, password }),
        headers: { 'Content-Type': 'application/json' }
      });
      localStorage.setItem('token', res.headers['access-token']);
      localStorage.setItem('client', res.headers['client']);
      localStorage.setItem('uid', res.headers['uid']);
      setUser(res.headers['access-token']);
      console.log('Logged in');
    } catch (err) {
      console.log(err);
    }
  }

  return (
    <AuthContext.Provider
      value={{ user, login, logout, register }}
      {...props}
    />
  );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用React上下文的用户身份验证

来自分类Dev

React身份验证上下文最初为空

来自分类Dev

为API设置经过身份验证的用户上下文?

来自分类Dev

使用私有路由和上下文进行身份验证

来自分类Dev

使用Spring的请求范围上下文进行身份验证

来自分类Dev

如何限制XAML的SAML 2.0身份验证上下文

来自分类Dev

在Web身份验证的上下文中了解JSON Web令牌(JWT)

来自分类Dev

在身份验证筛选器中的ChallengeAsync方法的上下文中设置结果

来自分类Dev

在上下文中找不到WebApi基本身份验证警告和GlobalConfiguration

来自分类Dev

如何自定义Django Rest身份验证电子邮件上下文

来自分类Dev

从身份验证上下文收到的令牌不起作用

来自分类Dev

Microsoft Graph:当前经过身份验证的上下文对此请求无效

来自分类Dev

如何在 JSF 上下文中替换经过身份验证的 javax.security.Principal?

来自分类Dev

Spring Security注销不起作用-无法清除安全上下文并且经过身份验证的用户仍然存在

来自分类Dev

闲置后重新启动Spark上下文时,“只能使用kerberos或Web身份验证来颁发委派令牌”

来自分类Dev

使用AsyncTask的用户身份验证

来自分类Dev

使用 Bcrypt 进行用户身份验证

来自分类Dev

使用 Python 的 aws 用户身份验证

来自分类Dev

使用 Firebase 检查用户身份验证

来自分类Dev

auth0身份验证问题:HttpContext.Current为null。此代码路径仅在ASP.NET的执行上下文中有效

来自分类Dev

在React中使用上下文在兄弟姐妹之间传递上下文

来自分类Dev

使用声明身份验证用户到系统的身份

来自分类Dev

如何使用Cognito身份验证我的身份/用户池?

来自分类Dev

用户使用身份验证方案的策略中缺少身份

来自分类Dev

使用ASP身份的会话和用户身份验证

来自分类Dev

使用经过身份验证的用户的laravel验证5.1

来自分类Dev

使用laravel身份验证时,如何检查用户是否已在React组件中“登录”?

来自分类Dev

在领域驱动设计中的身份和访问限界上下文中实现多个用户

来自分类Dev

如何使用React.cloneElement设置上下文

Related 相关文章

  1. 1

    使用React上下文的用户身份验证

  2. 2

    React身份验证上下文最初为空

  3. 3

    为API设置经过身份验证的用户上下文?

  4. 4

    使用私有路由和上下文进行身份验证

  5. 5

    使用Spring的请求范围上下文进行身份验证

  6. 6

    如何限制XAML的SAML 2.0身份验证上下文

  7. 7

    在Web身份验证的上下文中了解JSON Web令牌(JWT)

  8. 8

    在身份验证筛选器中的ChallengeAsync方法的上下文中设置结果

  9. 9

    在上下文中找不到WebApi基本身份验证警告和GlobalConfiguration

  10. 10

    如何自定义Django Rest身份验证电子邮件上下文

  11. 11

    从身份验证上下文收到的令牌不起作用

  12. 12

    Microsoft Graph:当前经过身份验证的上下文对此请求无效

  13. 13

    如何在 JSF 上下文中替换经过身份验证的 javax.security.Principal?

  14. 14

    Spring Security注销不起作用-无法清除安全上下文并且经过身份验证的用户仍然存在

  15. 15

    闲置后重新启动Spark上下文时,“只能使用kerberos或Web身份验证来颁发委派令牌”

  16. 16

    使用AsyncTask的用户身份验证

  17. 17

    使用 Bcrypt 进行用户身份验证

  18. 18

    使用 Python 的 aws 用户身份验证

  19. 19

    使用 Firebase 检查用户身份验证

  20. 20

    auth0身份验证问题:HttpContext.Current为null。此代码路径仅在ASP.NET的执行上下文中有效

  21. 21

    在React中使用上下文在兄弟姐妹之间传递上下文

  22. 22

    使用声明身份验证用户到系统的身份

  23. 23

    如何使用Cognito身份验证我的身份/用户池?

  24. 24

    用户使用身份验证方案的策略中缺少身份

  25. 25

    使用ASP身份的会话和用户身份验证

  26. 26

    使用经过身份验证的用户的laravel验证5.1

  27. 27

    使用laravel身份验证时,如何检查用户是否已在React组件中“登录”?

  28. 28

    在领域驱动设计中的身份和访问限界上下文中实现多个用户

  29. 29

    如何使用React.cloneElement设置上下文

热门标签

归档