1
jimzhong 2016 年 8 月 13 日
同请教。
|
2
wellsc 2016 年 8 月 13 日 via Android
Session
|
3
iiduce 2016 年 8 月 13 日
既然不用 @login_required ,就去看看它怎么写的,搬过来用哦。
def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None): """ Decorator for views that checks that the user is logged in, redirecting to the log-in page if necessary. """ actual_decorator = user_passes_test( lambda u: u.is_authenticated(), login_url=login_url, redirect_field_name=redirect_field_name ) if function: return actual_decorator(function) return actual_decorator |
6
NaVient 2016 年 8 月 15 日
其实 Django 的 authenticated 就是给 User 对象添加了一个 BACKENDS 属性,它是被哪个模块 authenticated 验证通过的,就给它加一串类似于 django.contrib.auth.backends.ModelBackend 这样的字符串。
|
9
FreeDog 2016 年 8 月 15 日
@NaVient 扩展 User 的话,官方更推荐 OneToOne 关系。 https://docs.djangoproject.com/en/1.10/topics/auth/customizing/
|
11
dikT 2016 年 8 月 15 日
'''
def login_check(func): def _login_check(req): try: _ = req.session['name'] if not _: return HttpResponseRedirect('/blog/login') except: return HttpResponseRedirect('/blog/login') else: return func(req) return _login_check ''' |
12
rainybowe 2016 年 8 月 15 日
以前的做法是自己维护登录数据,例如一张 token 表,每次登录为用户新建 token 。每次请求需要在 request header 中添加 token ,然后写一个装饰器每次校验 token 是否存在来判断是否登陆。
|