django server之间通过remote user 相互调用
首先,场景是这样的:存在两个django web应用,并且两个应用存在一定的联系。某些情况下彼此需要获取对方的数据。
但是我们的应用肯经都会有对应的鉴权机制。不会让人家随随便便就访问的对吧。好比上车要刷卡(滴,老人卡~~~)。我们知道在浏览器用户登陆后,每次请求都会对应的session,server可以根据对用的session判断用户的权限信息。但是我们不容易在server端使用,可能存在session失效时间等问题。
所以动手查看django官方文档,发现django提供remote user机制,可以支持server之间的远程调用。只需要在setting中添加如下设置:
1 2 3 4 5 6 7 8 9 10 | MIDDLEWARE_CLASSES = ( '...' , 'django.contrib.auth.middleware.AuthenticationMiddleware' , 'django.contrib.auth.middleware.RemoteUserMiddleware' , '...' , ) AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.RemoteUserBackend' , ) |
满心欢喜测试了一下,发现还是不行~~~(我就知道没这么简单)
还差一步,在setting添加一行,在环境变量中添加REMOTE_USER的用户名,注意jerry是系统中已经存在的一个用户
1 | os.environ[ 'REMOTE_USER' ] = "jerry" |
完成,这样在请求中没有session信息,或通过session判断用户没有登陆时,就会自动使用上面的REMOTE_USER用户登录。这样我们就有了一个公用的上车卡,但是为了安全我们可能需要给这个用户设定一些权限限制。(这样就算上了车,也只能没有作为只能站着,哈哈)
但是这样也可能带来一些问题,比如我们在其他接口中判断当前用户是否登录,如果没有就从定向到登录界面。但是采用REMOTE_USER后,会自动登录也就无法定向到登录页面。这就需要我们重新设计用户登录的逻辑。
强行开车,如有错误或好的见解欢迎指正。这里是老瘦家的儿子,如需转载请声明,我替老瘦感谢你。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端