django使用邮箱账号密码做用户登录认证,启用加密
2017-05-26 09:32
1071 查看
1、现有登录页面:
2、视图函数:
3、增加新的认证app
4、编辑登录视图:
5、修改登录视图:
引入class
from authnew.views import myldapBackend
6、修改login视图:
7、测试登录:
8、登录完成。
from django.conf.urls import url,include from django.contrib import admin from itil_ops.views import index,login,logout urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^home/$', index, name='index'), url(r'^$', index, name='index'), url(r'^login/$', login, name='login'), url(r'^logout/$', logout, name='logout'), url(r'^svnmgr/', include('svnmgr.urls')), ]
2、视图函数:
def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(username=username,password=password) if user is not None : auth.login(request, user) response = HttpResponseRedirect('/home/') request.session["uid"] = user.id return response else: return render_to_response('login.html') else: # return HttpResponseRedirect('/login/') return render_to_response('login.html') def logout(request): auth.logout(request) return render_to_response('login.html')
3、增加新的认证app
python manage.py startapp authnew
4、编辑登录视图:
[root@xiaotian-host2.com itil_ops]$ cat authnew/views.py #coding:utf-8 from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.contrib.auth import authenticate as authenticate_old #import sys from smtplib import SMTP_SSL #mail_host="smtp.mxhichina.com" class myldapBackend: def authenticate(self,username=None,password=None): if len(password) == 0: return None try: smtp = SMTP_SSL("smtp.mxhichina.com", 465) res = smtp.login(username+"@xxxxx你的邮箱地址后缀.com",password) if res[0]==235: return self.get_or_create_user(username,password) else: return authenticate_old(username=username,password=password) except: return authenticate_old(username=username,password=password) def get_or_create_user(self, username,password): try: user = User.objects.get(username=username) except User.DoesNotExist: #info=sys.exc_info() #print(info[0],":",info[1]) mail = username + "@xxxxx你的邮箱地址后缀.com" user = User(username=username,email=mail) user.is_staff = True user.is_superuser = False user.set_password('passwd set by mail!#..') user.save() #ug.user.add(user) return user
5、修改登录视图:
引入class
from authnew.views import myldapBackend
6、修改login视图:
def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') newauth=mymailBackend() user = newauth.authenticate(username=username,password=password) if user is not None : user.backend = 'django.contrib.auth.backends.ModelBackend' auth.login(request, user) response = HttpResponseRedirect('/home/') request.session["uid"] = user.id return response else: return render_to_response('login.html') else: # return HttpResponseRedirect('/login/') return render_to_response('login.html')
7、测试登录:
8、登录完成。
相关文章推荐
- django怎么在没有密码不能认证的情况下完成用户登录
- 这才是一个完整的用户登录(Forms身份认证+记住密码+加密存储+LoginedPage/BasePage)
- 使用Apache Shiro进行身份认证-密码加密
- 使用Form认证实现用户登录 (LoginView的使用)
- ubuntu下使用、启用、修改root用户密码
- Exchange Server OWA更改密码后,用户使用旧密码仍能登录
- ASP.NET - 如何:使用 ASP.NET PasswordRecovery 控件启用用户密码恢复
- django的用户认证管理,如何使用session(1)
- CAS 使用 ESUP 插件认证 LDAP 用户的单点登录
- 使用django的用户帐号登录openfire
- htmlunit使用小例子:模拟新浪邮箱登录、修改密码、更改帐号昵称
- QuickCSharp框架开发(18)------加密用户名和密码数据与数据库读出的密码进行哈希比较(验证用户是否成功登录)
- 如何实现共享软件网络授权认证,包括注册新用户、登录、修改密码等操作
- django的用户认证管理,如何使用session(2)
- Asp.Net使用加密cookie代替session验证用户登录状态 源码分享 欢迎拍砖
- 使用cppwebbrowser自动填入账号和密码并且登录的简单例子
- 设置允许使用空密码用户登录XP远程桌面
- 使用django的用户帐号登录 openfire
- 如何实现共享软件网络授权认证,包括注册新用户、登录、修改密码等操作