我已经整天试图从我的Asp.Net Api获取数据,但无济于事。我登录并从服务器获取身份验证令牌,并将其存储在本地,但是当我尝试执行任何需要身份验证的操作时,服务器将返回401响应。我的代码中我做错什么了吗?当我使用邮递员之类的工具时,一切正常,但在我的应用程序中却无法正常工作。 这是我的登录名
try {
response = await API.post(AuthUrl, credentials)
if(response.status >= 200 || response.status <= 299){
let Auth = {
Username: response.data.Username,
Roles: response.data.Roles,
Expires: response.data.Expires,
Token: response.data.Token
};
localStorage.setItem(window.location.host, JSON.stringify(Auth));
}
}
这是我的axios封装器
export default axios.create({
baseURL: BaseUrl,
responseType: "json",
auth: `Bearer ${localStorage.getItem(window.location.host) == null? "" : JSON.parse(localStorage.getItem(window.location.host)).Token}`
})
这就是我的消费方式
try{
const response = await API.get(getUrl)
setLoading(false);
//........Do something with response
}
答案 0 :(得分:1)
使用axios.create方法的方法不正确。 参考:https://github.com/axios/axios#request-config
该文档清楚地表明config auth:
指示应使用HTTP Basic身份验证,并提供凭据。对于Bearer令牌等,请改用Authorization
自定义标头,以便在您这种情况下可以执行类似的操作
export default axios.create({
baseURL: BaseUrl,
responseType: "json",
headers: {'Authorization': "bearer " + JSON.parse(localStorage.getItem(window.location.host)).Token}})