【发布时间】:2021-02-07 06:35:24
【问题描述】:
我正在尝试使用 react 和 django rest 登录。 我有用于登录后端的 rest-auth,并且用户来自 LDAP。
django 上的登录有效。 从 react 调用时,我的后端的响应也有效。
我尝试使用 react-cookie 将我的令牌保存在 cookie 中。
但是当我这样做时,我有错误:TypeError: Cannot read property 'token' of undefined
我拆分了我的代码。我有一个文件 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 中的显然不是令牌
【问题讨论】:
-
我认为这是因为在你的第一次,你没有返回任何东西,只是在做
console.log。我会将setToken移动到与控制台相同的then子句中,或者从第一个then子句中返回一些内容
标签: javascript reactjs django-rest-framework