django登入許可權跳轉
阿新 • • 發佈:2019-01-03
COOKIE和SESSION有什麼區別:
1:session 在伺服器端,cookie 在客戶端(瀏覽器)。
2:session 預設被存在在伺服器的一個檔案裡(不是記憶體)。
3:session 的執行依賴 session id,而 session id 是存在 cookie 中的,也就是說,如果瀏覽器禁用了 cookie ,同時 session 也會失效(但是可以通過其它方式實現,比如在 url 中傳遞 session_id)。
4:session 可以放在 檔案、資料庫、或記憶體中都可以。
5:使用者驗證這種場合一般會用session。
session登入許可權跳轉:
建立一個登陸頁面:
- <!DOCTYPE html
- <htmllang="en">
- <head>
- <metacharset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <formaction="/kake/login"method="post">
- {% csrf_token %}
- 使用者名稱:<inputtype="text"name="username"/><span>{{ mess }}</span><br/>
- 密碼:<input
- <inputtype="submit"value="登入"/>
- </form>
- </body>
- </html>
- <!DOCTYPE html>
- <htmllang="en">
- <head>
- <metacharset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- ---------歡迎訪問部落格管理系統---------
- {% if request.session.username is not None %}
- 歡迎{{ bloguser.userName }}<br/>
- <ahref="/kake/logout">登出</a>
- {% else %}
- <ahref="/kake/login">登入</a>
- {% endif %}
- <ahref="/kake/a">a登陸後才可以訪問的頁面</a>
- <ahref="/kake/b">b未登入也可以訪問的頁面</a>
- </body>
- </html>
- <!DOCTYPE html>
- <htmllang="en">
- <head>
- <metacharset="UTF-8">
- <title>a</title>
- </head>
- <body>
- aaaaaaaaaa
- 登陸後才可以訪問的頁面
- <ahref="/kake/success">success</a>
- </body>
- </html>
- <!DOCTYPE html>
- <htmllang="en">
- <head>
- <metacharset="UTF-8">
- <title>b</title>
- </head>
- <body>
- --------------
- 未登入也可以訪問的頁面
- </body>
- </html>
- path('login',views.login),
- path('success/<int:id>',views.success,name='success'),
- path('logout',views.login),
- path('a',views.a),
- path('b',views.b),
- def login(request):
- if request.method=='GET':
- return render(request,'login.html')
- else:
- # 接收頁面傳過來的使用者名稱,密碼
- uname = request.POST.get('username')
- pwd = request.POST.get('pwd')
- #從資料庫查詢是否存在此使用者名稱密碼
- blogUserSet=BlogUser.objects.filter(userName=uname,pwd=pwd)
- if len(blogUserSet)==1:
- #跳轉到登入的主頁面
- #將使用者名稱放入session
- session=request.session
- session['username']=uname
- if session.get('uri'):
- url=session['uri']
- session.pop('uri')
- return redirect(url)
- else:
- return redirect(reverse('user:success',args=[blogUserSet[0].id]))
- else:
- return render(request,'login.html',{'mess':'使用者名稱密碼不正確'})
- def success(request,id):
- blogUser=BlogUser.objects.get(pk=id)
- return render(request,'success.html',{'bloguser':blogUser})
- def logout(request):
- #實現登出session
- session=request.session
- #session.clear()
- session.pop('username')
- #session.flush()
- return render(request,'success.html')
- #登陸後才可以訪問的頁面