django使用session實現第三方數據庫賬號驗證

由於需要統一認證,因此沒使用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())

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章