哪位看过tornado源码的大神可以介绍下tornado authenticated的实现原理吗? 为什么使用functools.wraps装饰wrapper? 不用functools.wraps装饰也可完成登录检查,他那样实现有什么特殊考虑吗?
迷茫2017-04-17 11:58:20
你是想问为什么使用装饰器?还是问为什么使用functools.wraps实现装饰器?
1.第一问题的话,装饰器能够最大程度减少对现有代码的改动,同时提供了灵活的方式扩展
2.第二个问题的话,functools.wraps 作为内在模块,很好的处理了反射的问题
PHPz2017-04-17 11:58:20
functools.wraps本来就是一个快捷方式, 从来没有绕不过去的
tornado authenticated很简单, 用加密的cookie存储一些用户的数据, 至少存个用户id什么的. 因为cookie长度有限, 也不能多存, 我建议可以再存个登陆时间什么的.
cookie这些都是很原始的用法, 比如我们要每次检查用户在数据库里有没有被封, 那么仅仅靠tornado的用户机制还不行, 还需要多写一点代码查数据库. 不过一切都很灵活啦, 这就是我喜欢tornado的原因, 没有太多的自创概念需要学习.