首页 > 解决方案 > React - Django:TypeError:无法读取未定义的属性“令牌”

问题描述

我正在尝试使用 react 和 django rest 登录。我有用于登录后端的 rest-auth,并且用户来自 LDAP。

django上的登录有效。当从 react 调用时,来自我后端的响应也有效。

我尝试使用 react-cookie 将我的令牌保存在 cookie 中。

但是当我这样做时,出现错误:TypeError:无法读取未定义的属性“令牌”

我拆分了我的代码。我有一个文件 api_auth_service.js

export class APILogin {
    static loginUser(body){
        return fetch('http://127.0.0.1:8000/rest-auth/login/', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(body)
        }).then( resp => resp.json())
    }
}

和我的登录视图反应:

export default function Login() {

  const [ username, setUsername] = useState('');
  const [ password, setPassword] = useState('');

  const [token, setToken] = useCookies(['gra-token']);


  useEffect(() => {
    console.log(token);

  }, [token])

  const loginClicked = () => {
    APILogin.loginUser({username, password})
    .then( resp => console.log(resp))
    .then(resp => setToken('gra-token', resp.token))
    .catch( error => console.log(error))
  }

  return ( .............

如您所见,保存到我的 cookie 中的显然不是令牌

在此处输入图像描述

标签: javascriptreactjsdjango-rest-framework

解决方案


const loginClicked = () => {
 APILogin.loginUser({username, password})
 .then( resp => resp)
 .then(resp => setToken('gra-token', resp.token))
 .catch( error => console.log(error))
}

您需要从第一个 then 语句返回响应


推荐阅读