我试图从服务器上拉取一个食谱列表,该服务器期望从本地存储获得授权令牌。我创建了一个本地axiosAnd Auth文件,因为我将从API中访问多个endpoint。我的授权文件看起来像这样...
import axios from 'axios';
const axiosWithAuth = () => {
const token = localStorage.getItem('token');
return axios.create({
baseURL: 'https://secret-fam-recipes.herokuapp.com/api',
headers: { Authorization: token }
});
};
export default axiosWithAuth
然后,我将此axios调用与Redux操作一起使用,以便返回的数据更新项目的存储。我尝试过用两种不同的方式调用API。一个异步等待,看起来像这样。。。
export const listRecipes = () => async (dispatch) => {
dispatch({type: actions.FETCH_RECIPES_REQUEST});
try {
const {recipes} = await axiosWithAuth.get("/recipes")
console.log("recipes", recipes)
dispatch({type: actions.FETCH_RECIPES_SUCCESS, payload: recipes})
} catch(error) {
dispatch({type: actions.FETCH_RECIPES_FAILURE,
payload:
error.resposne && error.response.message
? error.response.message
: error.message
})
}
}
另一个没有异步等待,看起来像这样。。。
export const listRecipes = () => (dispatch) => {
dispatch({type: actions.FETCH_RECIPES_REQUEST});
axiosWithAuth.get("/recipes")
.then(data => {
return dispatch({type: actions.FETCH_RECIPES_SUCCESS, payload: data})
})
.catch(error => {
dispatch({type: actions.FETCH_RECIPES_FAILURE,
payload:
error.resposne && error.response.message
? error.response.message
: error.message
})
})
}
我也像这样导入了我的依赖项。。。
import axiosWithAuth from "../utils/axiosWithAuth";
import * as actions from "../constants/recipeConstants";
当我尝试异步等待操作时,服务器会返回500个错误。当我使用非异步等待操作时,我得到一个类型错误,当我试图加载页面时,说以下内容。.
TypeError: _utils_axiosWithAuth__WEBPACK_IMPORTED_MODULE_0__.default.get is not a function
很明显,我的操作或axiosWithAuth格式有问题。我已尝试将axiosWithAuth函数更改为使用auth关键字而不是标题,但它仍然无法工作。我不确定我的行为是否写得不正确,或者是否有其他东西我应该看看。任何帮助都将不胜感激。非常感谢。
更简单的方法是不从自定义axios返回函数,而是返回实际的axios实例。因为你只是设置一个标题,你可以这样做:
import axios from 'axios';
const axiosInstance = axios.create({
baseURL: 'https://secret-fam-recipes.herokuapp.com/api'
});
axiosInstance.interceptors.request.use((config) => {
config.headers['Authorization'] = localStorage.getItem('token');
return config;
});
export default axiosInstance;
然后,只需导入并使用axios实例:
import axios from './custom-axios';
axios.get('/url-here');
axiosAnd Auth是一个函数,所以我应该在我的操作中调用这个函数。正确的线是
const {recipes} = await axiosWithAuth().get("/recipes")
我正在创建一个电子学习网站,那里有你可以选择的课程卡片。这是我的密码 课程ist.vue 我的问题是我无法从API链接获取数据- 我想知道我做错了什么。我也尝试使用{{list}}来获取数据,但没有成功。我现在的目标是得到所有的数据,即使它看起来很乱。抱歉我英语不好,谢谢你!
为了请求访问令牌,客户端从资源所有者获得授权。授权表现为授权许可的形式,客户端用它请求访问令牌。OAuth定义了四种许可类型:授权码、隐式许可、资源所有者密码凭据和客户端凭据。它还提供了扩展机制定义其他许可类型。
我在springboot springSecurity oauth2中有一个项目,该项目工作正常。我想在这个项目中添加KeyClope。我想在我的项目中授权用户,并从KeyClope获得。这可能吗?
API使用步骤 成为目睹云认证用户 登录控制台https://www.wenjiangs.com/doc/QSfBOXSPconsole/, 进入系统管理下的TOKEN管理。 使用第二步中得到的TOKEN,便可以访问目睹云API中的全部接口服务,如果请求没有带上TOKEN,目睹云API的安全机制将会视其为未授权访问操作,并将其拦截。 API域名 https://www.muducloud.com
我在.NET Core中设置了一个简单的API,使用Identity Server4编排的JWT保护它。当我访问一个属性为[Authorize]的endpoint时,我得到了预期的响应(401未授权)。注释掉后,它返回实际数据,正如所支持的那样。 现在,当添加具有密钥授权和值载体XXX的头(其中XXX是我获得的令牌)时,我会立即得到一条错误消息 无法得到任何响应 接下来是关于该怎么做的四点建议。我
我使用隐式授权流将Spotify API与AngularJS结合使用,但我不能使用access_token。 我以这种方式实现了隐性拨款流: 当我上网址时,我被很好地重定向到Spotify认证,但当我连接时,浏览器进入重定向循环:Spotify将我重定向到localhost/~mathieu这将我重定向到Spotify等… 我想在Spotify重定向我之后,我的脚本无法获取令牌,所以我再次被重定向