2017-08-09 67 views
0

我想有多个Django项目,但只使用一个用户数据库登录并有该实例(request.user)?我正在使用PostgreSQL。Django一个登录系统使用postgresql的多个应用程序

我的意思是当我访问Django的一个应用程序时仍然有相同的cookie用于登录或用户另一个应用程序。

+0

这取决于,例如,如果他们在子域上,那么你可以为你的整个域设置** session **,使其在所有的子域中都可用。看到[这里](https://stackoverflow.com/questions/3742675/sharing-django-sessions-on-specific-subdomains) –

回答

1

可能的,这里有两个选择

  1. 您需要在应用程序之间共享DB和配置的Cookie

    一个。分享数据库为USERS模型https://docs.djangoproject.com/en/dev/topics/db/multi-db/

    b。更新设置

    https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-SESSION_COOKIE_DOMAIN会给你访问跨域饼干

    SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies" 
    SESSION_COOKIE_NAME = 'your_cookie_name' 
    SESSION_COOKIE_DOMAIN = '.yoursite.com' 
    SECRET_KEY = "Share same key(this key) between your apps" 
    

    SECRET_KEY应该在这两个应用程序的settings.py

  2. 尝试同样实现Django的OpenID的,像FB的OAuth登录/谷歌的OAuth 登录

    下面是Django的OIDC:http://django-oidc-provider.readthedocs.io/en/v0.5.x/

+0

所以当我实现django openid我可以共享django项目之间的登录?我问过这个问题,因为我已经有3个项目,每个项目都有不同的ids用户顺序(重复),但是我想创建一个“主”数据库,然后与该数据库创建一个用户登录应用程序并更改为另一个人项目检测到用户已经登录 –

+0

是的,你可以共享登录,但用户需要授权登录,就像你如何使用Facebook登录到Netflix。 – naren

+0

我会尝试与用户共享一个数据库,只能通过我所有的django项目,谢谢@naren –

相关问题