vab*_*ada 5 authentication django nginx uwsgi
我想上传我的网站的开发分支,以便我可以向客户展示它并在尽可能接近生产的环境中进行测试(代码可能还没有为生产做好准备).因此我想密码保护这个网站.
我正在使用Django开发一个网站,并使用nginx为网站提供服务(使用uWsgi).我设法在应用以下指令时提示输入密码:
auth_basic "Restricted Content"; # also tried "Private Property"
auth_basic_user_file /etc/nginx/.htpasswd;
Run Code Online (Sandbox Code Playgroud)
但问题是,在正确输入第一个密码后,它会再次提示我输入用户和密码; 好像每个API调用都需要进行身份验证.
我认为问题可能出在我的配置文件中,所以这是我的site.conf文件:
server {
listen 80;
server_name panel.mysite.dev;
root /path/to/my/app/front/dist;
### I've also tried 'auth_basic' here
location / {
root /path/to/my/app/front/dist;
index index.html;
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location /media {
rewrite ^(.*)$ http://media.mysite.dev$1;
}
location /static {
rewrite ^(.*)$ http://static.mysite.dev$1;
}
}
server {
listen 80;
server_name api.mysite.dev;
### I've also tried 'auth_basic' here
location /api {
client_max_body_size 25m;
uwsgi_pass unix:/tmp/api.mysite.dev.sock;
include /path/to/my/app/back/uwsgi_params;
}
}
server {
listen 80;
server_name media.mysite.dev;
root /path/to/my/app/media;
add_header 'Access-Control-Allow-Origin' '.*\.mysite\.[com|dev]';
location / {
root /path/to/my/app/media;
}
}
server {
listen 80;
server_name static.mysite.dev;
root /path/to/my/app/static;
if ($http_origin ~* (https?://.*\.mysite\.[com|dev](:[0-9]+)?)) {
set $cors "true";
}
location / {
if ($cors = "true") {
add_header 'Access-Control-Allow-Origin' "$http_origin";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:输入后是否有任何方法可以记住密码,并允许经过身份验证的用户轻松导航?还是我错过了一些微不足道的事情?
编辑:在我的django settings.py:
AUTHENTICATION_BACKENDS = (
'oauth2_provider.backends.OAuth2Backend',
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
...
REST_FRAMEWORK = {
...
DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'oauth2_provider.ext.rest_framework.OAuth2Authentication',
),
Run Code Online (Sandbox Code Playgroud)
非常感谢你提前.任何帮助将非常感激
Phi*_*lip 14
基本身份验证使用Authorization标头来传输用户和密码.Django REST 也在TokenAuthentication身份验证后端使用此标头.Nginx 不支持多个Authorization标头,因此如果您尝试同时登录并使用令牌身份验证,事情就会中断.
不需要更改Django应用程序的解决方案是在nginx中使用其他身份验证方法,例如客户端证书,或者,您可以使用它ngx_http_auth_request_module来检查签名会话cookie是否设置/有效或者请求IP是否在(临时)白名单,并将用户重定向到具有登录表单的页面.
| 归档时间: |
|
| 查看次数: |
4477 次 |
| 最近记录: |