今天的文章基於之前做的配置,實現乙個具體的功能demo——登入。在login的templates目錄下建立兩個模板,分別是login.html和home.html,當使用者未登入時,跳轉到login.html頁面,登陸成功或者登入狀態,跳轉到home.html。
url的配置主要有兩個,django_demo下的urls.py,內容如下:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', include('login.urls')),
]
然後是login下的urls.py:
urlpatterns = [
url('^$', views.home, name='home'),
url('^do_login/$', views.do_login, name='do_login')
]兩份配置共同定義了兩個可訪問的url:
看一下兩個頁面,做的很簡單也不美觀,主要為了說明功能。login.html如下:
其中用到了django的模板,用來通過url配置中的name引數反向求解,對於本例,就是http://ip:port/login/do_login/。}用來對映render給模板的引數,接下來的views.py會看到對應的**。然後是home.html
主頁歡迎,}
login/views.py中的import如下
from django.shortcuts import render, redirect, reverse
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login
然後是上面urls.py配置中用到的兩個函式,先看home
@login_required(login_url='/login/do_login')
def home(request):
return render(request,
'home.html',
)
home函式前新增了login_requeried修飾符,該修飾符用來說明執行home前需要登入,登入的url是/login/do_login/。而home函式很簡單,就是返回渲染後的home.html模板,向模板傳遞了當前登陸的使用者名稱。看看do_login做了什麼。
def do_login(request):
if request.method == 'get':
return render(request, 'login.html')
username = request.post.get('username', '')
password = request.post.get('password', '')
user = authenticate(request, username=username, password=password)
if user is not none:
login(request, user)
return redirect(reverse('login:home'))
else:
return render(request, 'login.html', )
do_login的**實際上可以作為標準的login流程,首先獲取使用者名稱和密碼,然後通過authenticate方法進行校驗,如果該使用者存在,會返回使用者物件,通過login函式執行登入,如果使用者不存在,返回到login.html頁面。
Session實現使用者登入
前端介面 複製 一 登入驗證 1 將使用者輸入的使用者名稱和密碼與資料庫裡面的使用者名稱密碼進行比對。2 建立user物件,設定使用者名稱和密碼。3 建立session物件,儲存user物件。通過getsession 的setattribute 儲存乙個user物件。4 登入成功,實現頁面跳轉。二 ...
Spring Security實現使用者登入許可權管理
主要工作有 1 認證 判斷使用者名稱和密碼是否正確 2 授權 判斷使用者是否有許可權執行某些操作 接下來是實現的步驟 匯入spring.security對應jar包。在pom.xml中標籤下新增如下 org.springframework.security spring security web 5...
ajax JQuery 實現使用者登入
將map物件轉換為 json字元穿 new writevalueasstring map system.out.println s 結果列印到控制台 將資訊顯示在瀏覽器 writevalue response.getwriter map html title title js jquery 3.3....