• 技术文章 >后端开发 >Python教程

    django server之间通过remote user相互调用方法

    高洛峰高洛峰2017-03-27 16:47:17原创1183
    首先,场景是这样的:存在两个django web应用,并且两个应用存在一定的联系。某些情况下彼此需要获取对方的数据。

    但是我们的应用肯经都会有对应的鉴权机制。不会让人家随随便便就访问的对吧。好比上车要刷卡(滴,老人卡~~~)。我们知道在浏览器用户登陆后,每次请求都会对应的session,server可以根据对用的session判断用户的权限信息。但是我们不容易在server端使用,可能存在session失效时间等问题。

    所以动手查看django官方文档,发现django提供remote user机制,可以支持server之间的远程调用。只需要在setting中添加如下设置:


    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用户登录。这样我们就有了一个公用的上车卡,但是为了安全我们可能需要给这个用户设定一些权限限制。(这样就算上了车,也只能没有作为只能站着,哈哈)

    但是这样也可能带来一些问题,比如我们在其他接口中判断当前用户是否登录,如果没有就从定向到登录界面。但是采用REMOTE_USER后,会自动登录也就无法定向到登录页面。这就需要我们重新设计用户登录的逻辑。

    以上就是django server之间通过remote user相互调用方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:django
    上一篇:python基础之迭代器与生成器 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Python NumPy教程之数据类型对象• 在Django的视图(View)外使用Session的方法• Python标准库中的logging用法示例• python自动化测试实例解析• 使用Python处理KNN分类算法
    1/1

    PHP中文网