我想为 react-admin 实现我自己的 authProvider 但我被卡住了。
我使用 Django-Rest-Framework 后端和 JWT 令牌认证系统。
如果 JWT 令牌在每次请求之前几乎过期,我想刷新它。根据文档,在每次 API 调用之前都会调用authProvider'scheckAuth函数,这是真的。我的问题是,对于我的代码,它不会等待承诺完成,而是使用旧的访问令牌,这会导致 401,然后我被重定向到登录页面。任何指导我缺少什么?
import jwt from 'jsonwebtoken';
export default {
login: async ({ username, password }) => {
const request = new Request('http://localhost:8000/api/token/', {
method: 'POST',
body: JSON.stringify({ username, password }),
headers: new Headers({ 'Content-Type': 'application/json' }),
});
const response = await fetch(request);
if (response.status < 200 || response.status >= 300) {
throw new Error(response.statusText);
}
const { refresh, access } = await …Run Code Online (Sandbox Code Playgroud) 我想在python中创建一个github应用程序,我被困在身份验证部分。由于默认情况下它们不支持python,因此我必须使用第三方库。生成 JWT 令牌后,我可以成功使用 curl 进行身份验证,但不能使用库进行身份验证。
我试过使用 PyGithub 和 Github.py 并且都返回了“错误的凭据”错误,所以我一定忽略了一些东西。
import jwt
from github import Github
from dotenv import load_dotenv
load_dotenv()
GITHUB_PRIVATE_KEY = os.getenv('GITHUB_PRIVATE_KEY')
GITHUB_APP_IDENTIFIER = os.getenv('GITHUB_APP_IDENTIFIER')
GITHUB_WEBHOOK_SECRET = os.getenv('GITHUB_WEBHOOK_SECRET')
message = {'iat': int(time.time()),
'exp': int(time.time()) + (10 * 60),
'iss': GITHUB_APP_IDENTIFIER}
token = jwt.encode(message, GITHUB_PRIVATE_KEY.strip().encode(), 'RS256')
gh = Github(jwt=token.decode())
for repo in gh.get_user().get_repos():
print(repo.name)
Run Code Online (Sandbox Code Playgroud)
此 curl 命令返回我的应用程序的详细信息:
curl -i -H "Authorization: Bearer YOUR_JWT" -H "Accept: application/vnd.github.machine-man-preview+json" https://api.github.com/app
Run Code Online (Sandbox Code Playgroud)
我希望代码能够验证并打印我的回购,但是我得到
Traceback (most recent call last):
File "C:/python/jeev/testing.py", line 21, in <module> …Run Code Online (Sandbox Code Playgroud) 我有一个小脚本,女巫使用omdbapi从IMDB中获取数据。我设法从站点获取数据,但是当我尝试检查电影海报是否有效时,它总是返回false。
if(!$info['Poster'] == "N/A") {
$url = $info['Poster'];
$img = 'images/'.$info["imdbID"].'.jpg';
file_put_contents($img, file_get_contents($url));
echo 'Downloaded';
} else {
echo '!Downloaded';
$noCover = true;
}
Run Code Online (Sandbox Code Playgroud)
$ info ['Poster']包含与此类似的数据:http : //ia.media-imdb.com/images/M/MV5BMTM0MDgwNjMyMl5BMl5BanBnXkFtZTcwNTg3NzAzMw@@._V1_SX300.jpg
它工作了一段时间,但是以某种方式停止了...