验证django 用户认证auth模块常见方法使用.

摘要: 归纳总结了一些验证django 用户认证auth模块常见方法使用, 包括用户认证,密码重设,退出登录 等一些常见的处理方式。

在用 django 改造某些旧系统的时候,由于原来的用户设计不可能按照django 的 auth 模块的用户表那样设计的,当然你可以硬扩展成那样,但必须保证不影响别的系统,所以在很多情况下还是保持原来的表结构不变,自己写用户,权限管理这一块. 以前写过一篇自己定义 session 的方式: django 自定义session , 并采用装饰模式来实现django 自身的 @login_required 类似功能。 如果是新开发的应用,如何用django 自身的 装饰方法判断是否登录:

rom django.shortcuts import render
from programm.models import *
from django.contrib.auth.decorators import login_required

def index(request):
        return render(request, 'index.html')

@login_required
def liste(request):
        return render(request, 'liste.html', {'lObj': myModel.objects.all()})


在这里直接用 @login_required 来装饰,但是用这种情况的前提是你必须采用 DJANGO的 autho 框架来实现用户管理.

from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            # Redirect to a success page.
        else:
            # Return a 'disabled account' error message
    else:
        # Return an 'invalid login' error message.


除此之外,还有一些其他的方法:
logout(request[, next_page, template_name, redirect_field_name])
password_change(request[, template_name, post_change_redirect, password_change_form])
password_change_done(request[, template_name])
password_reset(request[, is_admin_site, template_name, email_template_name, password_reset_form,token_generator, post_reset_redirect, from_email])
password_reset_done(request[, template_name])

其用法可以参考如下:

(r'^change_passwd/$', 'django.contrib.auth.views.password_change', {
    'template_name': 'change_passwd.html',
    'post_change_redirect': '/',
}),
(r'^reset_passwd/$', 'django.contrib.auth.views.password_reset', {
    'template_name': 'reset_passwd.html',
    'email_template_name': 'reset_passwd_email.html',
    'post_reset_redirect': '/reset_done/',
    'from_email': 'noreply@jihua.in',
}),
(r'^reset_confirm/(?P[0-9A-Za-z]{1,13})-(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', \
    'django.contrib.auth.views.password_reset_confirm', {
        'template_name': 'reset_confirm.html',
        'post_reset_redirect': '/signin/',
    }
),
(r'^reset_done/$', 'django.views.generic.simple.direct_to_template', {'template': 'message.html', 'extra_context': {
    'msg': _(u'我们已将一封包含恢复密码步骤的邮件发到了您的邮箱,请查收'),
}}),


上一篇: You don't have permission to access / on this serv
下一篇: JSP 页面中 jsessioinid 出现在css和js路径中的怪现象
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号