Django REST框架:如何正确使用基于会话的身份验证?

时间:2014-11-13 23:41:59

标签: rest session authentication

我正在使用Python / Django 1.7.1和Django REST Framework构建项目。

我有两个项目子域名:

  • api.myproject.com
  • www.myproject.com

WWW-host包含用户可以登录的网站。 REST后端位于API主机上。

我像这样配置了Django REST Framework:

REST_FRAMEWORK = {   
    'PAGINATE_BY': 10,
    'PAGINATE_BY_PARAM': None,
    'MAX_PAGINATE_BY': 10,
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),
}

实质上:我在WWW主机上使用基于会话的身份验证,为Android应用程序使用基于令牌的身份验证。

现在问题就在于此。在WWW主机上登录的用户可以在API主机上使用REST API,因为会话身份验证已启用。在WWW主机上运行的JavaScript正在向API主机发出API调用。这很好用,但是当用户登录到WWW主机然后打开一个新选项卡并转到API主机时,用户可以只看到REST API,这不是我打算做的此

当用户登录WWW主机时,无论如何都不在API主机上显示REST API吗?

我配置了会话cookie域和CSRF cookie域,如下所示:

DOMAIN = 'myproject.com'
SESSION_COOKIE_DOMAIN = '.' + DOMAIN
CSRF_COOKIE_DOMAIN = SESSION_COOKIE_DOMAIN

我将其修改为:

DOMAIN = 'myproject.com'
SESSION_COOKIE_DOMAIN = 'www.' + DOMAIN
CSRF_COOKIE_DOMAIN = SESSION_COOKIE_DOMAIN

但是在尝试此操作时,当用户登录WWW主机时,REST API无法通过会话身份验证获得,因为cookie仅为WWW主机设置...

我的问题的任何提示? : - )

提前致谢!

亲切的问候, ķ。

1 个答案:

答案 0 :(得分:1)

基本上......我的问题有点愚蠢,你可以根据需要实现权限来解决这个问题。问题解决了! : - )