首先,场景是这样的:存在两个django web应用,而且两个应用存在必定的联系。某些状况下彼此须要获取对方的数据。python
可是咱们的应用肯经都会有对应的鉴权机制。不会让人家随随便便就访问的对吧。比如上车要刷卡(滴,老人卡~~~)。咱们知道在浏览器用户登录后,每次请求都会对应的session,server能够根据对用的session判断用户的权限信息。可是咱们不容易在server端使用,可能存在session失效时间等问题。web
因此动手查看django官方文档,发现django提供remote user机制,能够支持server之间的远程调用。只须要在setting中添加以下设置:django
MIDDLEWARE_CLASSES = ( '...', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.RemoteUserMiddleware', '...', ) AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.RemoteUserBackend', )
满心欢喜测试了一下,发现仍是不行~~~(我就知道没这么简单)浏览器
还差一步,在setting添加一行,在环境变量中添加REMOTE_USER的用户名,注意jerry是系统中已经存在的一个用户安全
os.environ['REMOTE_USER'] = "jerry"
完成,这样在请求中没有session信息,或经过session判断用户没有登录时,就会自动使用上面的REMOTE_USER用户登陆。这样咱们就有了一个公用的上车卡,可是为了安全咱们可能须要给这个用户设定一些权限限制。(这样就算上了车,也只能没有做为只能站着,哈哈)session
可是这样也可能带来一些问题,好比咱们在其余接口中判断当前用户是否登陆,若是没有就从定向到登陆界面。可是采用REMOTE_USER后,会自动登陆也就没法定向到登陆页面。这就须要咱们从新设计用户登陆的逻辑。测试
强行开车,若有错误或好的看法欢迎指正。这里是老瘦家的儿子,如需转载请声明,我替老瘦感谢你。设计