简单的使用Django认证系统
User对象
User对象是认证系统的核心。它们通常表示与你的站点进行交互的用户,并用于启用限制访问、注册用户信息和给创建者关联内容等
默认user的基本属性有:
创建一个django中的User对象
创建users最直接的方法是使用create_user()辅助函数:
下面的代码是未激活的账户
from django.contrib.auth.models import User user = User.objects.create_user(username, email, password) user.is_active = 0 user.save() #如果激活则把is_active 字段值改为1
认证一组给定的用户名和密码。
使用authenticate(),认证一组给定的用户名和密码。它接收关键字参数形式的凭证,使用默认配置时参数是username和password,如果密码能够匹配给定的用户名,它将返回一个User对象。如果密码无效,authenticate()返回None。
#导入authenticate() from django.contrib.auth import authenticate user = authenticate(username=‘john‘, password=‘secret‘) if user is not None: #用户名密码正确 if user.is_active: #用户已激活 #记录用户的激活状态 login(request,user) # 实现页面的跳转 response =redirect(reverse('user:user')) #判断是否需要记住用户名 remember = request.POST.get('remember') if remember == 'on': #记住用户名 response.set_cookie('username',username,max_age=7*21*3600) else: response.delete_cookie('username') return response else: #用户未激活 return render(request, 'login.html', {'errmsg': '请激活您的账户'}) else: #用户名或密码错误 return render(request, 'login.html',{'errmsg':'用户名或密码错误'})
修改密码
Django不会在user模型上存储原始的(明文)密码,而只是一个哈希(完整的细节参见文档:密码是如何管理的)。因为这个原因,不要尝试直接操作user的password属性。这也是为什么创建一个user时要使用辅助函数。
若要修改一个用户的密码,你有几种选择:
manage.py changepassword *username*提供一种从命令行修改User密码的方法。它提示你修改一个给定user的密码,你必须输入两次。如果它们匹配,新的密码将会立即修改。如果你没有提供user,命令行将尝试修改与当前系统用户匹配的用户名的密码。
你也可以通过程序修改密码,使用set_password():
代码如下:
>>> from django.contrib.auth.models import User >>> u = User.objects.get(username=‘john‘) >>> u.set_password(‘new password‘) >>> u.save()
Ps: 如果你安装了Django admin,你还可以在认证系统的admin页面修改user的密码。
参考链接:
http://www.mamicode.com/info-detail-2069023.html