基於cookie和session的登入驗證,cookiesession驗證

來源:互聯網
上載者:User

基於cookie和session的登入驗證,cookiesession驗證

settings.py

MIDDLEWARE = [    'django.middleware.security.SecurityMiddleware',    'django.contrib.sessions.middleware.SessionMiddleware',    'django.middleware.common.CommonMiddleware',    'django.middleware.csrf.CsrfViewMiddleware',    'django.contrib.auth.middleware.AuthenticationMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',    'django.middleware.clickjacking.XFrameOptionsMiddleware',]

一般不用修改settings.py,但是使用模版需要修改如下:(即將TEMPLATES中的DIRS改成[os.path.join(BASE_DIR, 'templates')])

TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS':  [os.path.join(BASE_DIR, 'templates')],        'APP_DIRS': True,        'OPTIONS': {            'context_processors': [                'django.template.context_processors.debug',                'django.template.context_processors.request',                'django.contrib.auth.context_processors.auth',                'django.contrib.messages.context_processors.messages',            ],        },    },]

 

urls.py

from django.urls import pathfrom cookie import viewsurlpatterns = [    path('admin/', admin.site.urls),    path('login/',views.login),    path('index/',views.index),]

models.py

from django.db import models# Create your models here.class User(models.Model):    user=models.CharField(max_length=20,unique=True,db_index=True)    pwd=models.CharField(max_length=20,db_index=True)    def __str__(self):        return self.user

views.py

from django.shortcuts import render, redirect
from .models import User


# Create your views here.
def login(request):
msg = ''
if request.method == 'POST':
name = request.POST.get("user")
pwd = request.POST.get("pwd")
c = User.objects.filter(user=name, pwd=pwd).count()
if c:
request.session['is_log'] = 111
request.session['username'] = name
return redirect('/index/')
else:
msg = '使用者名稱或密碼有誤'
return render(request, 'login.html', {'msg': msg})
else:
return render(request, 'login.html', {'msg': msg})


def index(request):
print(request.session.get('is_log'))
if request.session.get('is_log', None):
user = request.session.get('username')
return render(request, 'index.html', {'user': user})
else:
return redirect('/login/')


def bb(request):
return redirect('/login/')

index.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>index</title></head><body>歡迎 {{ user }}!</body></html>

login.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>login</title></head><body><form action="/login/" method="post">    {% csrf_token %}    <div>        <laber for="user">使用者名稱</laber>        <input id="user" type="text" name="user"/>    </div>    <div>        <laber for="pwd">密碼</laber>        <input id="pwd" type="password" name="pwd">    </div>    <div>        <input type="submit" value="登入">    </div></form></body></html>

注意:由於我們將session存於資料庫中所以要執行python manage.py makemigrations 後再執行python manage.py migrate建立資料表。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.