我正在创建一个应用程序,用户可以在其中登录并查看其个人资料。为此,我在服务器上设置了enpdpoint:
<FlatList
style={{
flex: 1
}}
contentContainerStyle={{
paddingTop: 40
}}
data={this.props.produk}
renderItem={({ item }) => (
<View key={item.id}>
<Image
resizeMode="cover"
source={{ uri: item.thumb }}
style={styles.fotoProduk}
/>
</View>
)}
keyExtractor={(item, index) => index}
/>
如果标头中包含身份验证令牌,则router.get('/profile',
passport.authenticate('jwt', {session:false}),
async(req, res) => {
console.log(req.headers)
try {
let users = await usersDB.getAll();
res.json({
users: users,
user: req.user
});
} catch (err) {
console.log(err);
}
});
行应对用户进行身份验证。
但就我尝试记录标题而言,它们没有这样的字段。
所以在登录按钮提交时,我会执行以下操作:
passport.authenticate('jwt', {session:false})
然后看一下getProfile():
public onLoginSubmit(): void {
const user = {
email : this.email,
password : this.password
}
this.authService.authenticateUser(user).subscribe((data: any)=>{
if(data.success){//here need to check response for success
this.authService.storeUserData(data);
this.router.navigate(['/user']);
}else{
this.router.navigate(['/login']);
}
});
}
好吧,在发送请求时,我得到了 getProfile(){
let headers = new HttpHeaders();
this.loadToken();
headers.set('Content-Type', 'application/x-www-form-urlencoded').set('Authorization', this.authToken);
return this.http.get(`${this.url}profile/`, {headers:headers})
.pipe(map(res => res))
}
但是对于邮递员来说,一切都很好。这是邮递员的代码:
401 Unauthorized
答案 0 :(得分:1)
HttpHeaders是不可变的,所以只需尝试(我想您不需要设置application / x-www-form-urlencoded)
getProfile(){
let headers = new HttpHeaders({
'Authorization' : this.authToken
});
this.loadToken();
return this.http.get(`${this.url}profile/`, {headers:headers})
.pipe(map(res => res))
}
如果您的身份验证是Bearer,则需要“授权”:'Bearer'+'this.authToken'