python asp.net _sessionid_Asp.Net与Django共享签名cookie

网站需要标示用户登陆状态时,使用cookie便够了;原则上,我是反对使用session的。

直接把登陆用户的ID写入cookie,做为识别即可。但需要注意的是,这个cookie的值必须签名或者是加密,防止伪造。

很多web框架,比方说django,都有内置的签名cookie支持,直接response.set_sign_cookie即可。

Asp.Net很多方面都挺优秀的,但比较诡异的是,不论是System.Web命名空间下还是asp.net MVC貌似都没提供相关的支持。google了一圈,也没发现啥好用的cookie实现。

well,自己动手,丰衣足食。

签名这事可以很简单,value + hex(md5(secret key + salt + value))也是可以的。

但这是终归涉及系统账号安全,还是使用业界通用的标准比较好。

那就移植Django的签名实现吧,反正也没多少代码。

直接nuget Install-Package NDjangoSignCookie可用。

全部源码加注视空行排版等一共126行,基本一次完成编码并调试成功。

参考的是django 1.6.x版本的cookie签名实现,但估计应该很多版本都是兼容的,这块django应该不会怎么变动才对。我就懒得去试的。

使用与Django完全一模一样的签名方法,实际上还顺便解决了一个潜在需求:

asp.net子站与Django子站共享登陆

比方说, login.65dg.me 是用asp.net开发的,.net这边在用户登陆后,用SetSignCookie(...)方法保存用户id去.65dg.me根域名下。

然后, help.65dg.me 是用django开发的,它就可以直接使用request.get_sign_cookie(..)方法来获得asp.net签名的cookie,检查用户是否登陆。

反过来,django端写cookie,asp.net这边读也行。

当然,两边得配置使用相同的SECRET_KEY。

最后,做为一个前python粉丝,我这次翻django源码的时候,翻到:

时,真心只能一声叹息。为了兼容python 2/3,晦涩,又得写一堆无聊的代码……这种搞法,哪有什么开发效率可言?唉~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值