由於需要統一認證,因此沒使用Django自帶的驗證系統,而採用統一的數據庫認證,因此使用session方式認證。
URL路由urls.py
from django.contrib import admin
from django.urls import path,include
from webs import views as web_views
from django.conf.urls import url
urlpatterns = [
url(r'^login/', web_views.web_login, name='web_login'),
url(r'^user_login/', web_views.user_login, name='user_login'),
url(r'^logout/', web_views.logout, name='logout'),
]
登錄頁面login.html
登錄頁面的前端代碼,用於登錄顯示
<div class="login-box-body">
<p class="login-box-msg">請登錄</p>
<form action="/user_login/" method="post">
{% csrf_token %}
<div class="form-group has-feedback">
<input type="text" name="username" class="form-control" placeholder="username">
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<input type="password" name="password" class="form-control" placeholder="password">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="row">
<div class="col-xs-8">
<div class="checkbox icheck">
</div>
</div>
<!-- /.col -->
<div class="col-xs-4">
<button type="submit" class="btn btn-primary btn-block btn-flat">Sign In</button>
</div>
<!-- /.col -->
</div>
</form>
第三方數據庫連接mysql.py
該代碼在應用目錄下
import pymysql
def queryuser(username,password):
db = pymysql.connect("192.168.1.2","software","test","user",cursorclass=pymysql.cursors.DictCursor )
cursor = db.cursor()
sql=("select userid from user where userid='%s' and password=password('%s')") %(username,password)
print (sql)
cursor.execute(sql)
row_1 = cursor.fetchone()
return row_1["userid"]
views.py
登錄驗證代碼部分
from .mysquser import mysquser
def user_login(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
try:
user =mysquser(username,password)
if user is not None:
request.session['username'] = username
request.session['is_login'] = True
return render(request, 'index.html', locals())
else:
return render(request, 'login.html', locals())
except:
return render(request, 'login.html', locals())
判斷session用戶是否登錄驗證
def index(request):
if not request.session.get('is_login', None):
return render(request, 'login.html')
else:
database = databases_view.objects.all()
return render(request, 'index.html', locals())
登出代碼
def logout(request):
if not request.session.get('is_login', None):
return redirect("/login/")
request.session.flush()
return render(request, 'login.html', locals())