在我的django项目中,我有一个设置了login_required
的网址,因为我需要其中的request.user
变量来处理某些数据,
我还创建了一个简单的chrome扩展程序,在该扩展程序中,我将不得不向该django项目url发送请求。
我不想使用扩展名中的用户名和密码登录并发送请求
我要:
很抱歉,这似乎是一个愚蠢的问题,但是我对如何执行此操作感到非常困惑
PS:我已经有了一个系统,用户可以在不登录的情况下使用密钥来发出请求, 我只需要一种在安装扩展程序时打开选项卡的方法,然后登录然后获取密钥(登录后将在页面中注入密钥),并保存它以便以后在扩展程序中使用。
答案 0 :(得分:0)
首次打开扩展程序时,我正在向用户显示一个登录页面。登录页面将用户名和密码发送到经过身份验证的API。如果信息正确,则返回所需的用户信息(主要是API密钥)。然后将信息保存到本地存储中。
var username = document.querySelector('[name="username"]');
var password = document.querySelector('[name="password"]');
$.ajax({
URL : 'https://example.com/api/extension-auth/',
type: 'POST',
crossDomain: true,
data: JSON.stringify({
'username': username.value.trim(),
'password': password.value.trim(),
}),
success: res => {
if (res.api_key) {
browser.storage.sync.set({ 'user_data': {'api_key': api_key} }, () => {
// show extension main logged in page
});
}
else {
// show invalid login information alert
}
},
error: function (err) {
// show server error aler
},
});
每次打开扩展名时,都会检查本地存储
browser.storage.sync.get('user_data', data => {
if (data.user_data) {
if (valid_api_key(data.user_data.api_key)) {
// show extension main logged in page
}
else {
// show login page
}
}
else {
// show login page
}
});
valid_api_key
函数对API进行随机调用,以检查是否没有验证错误。
然后,我使用本地存储中保存的API密钥进行API请求。