1. 程式人生 > >基於flask框架設計使用者的登入(前後端)

基於flask框架設計使用者的登入(前後端)

基於flask框架設計使用者的登入(前後端)

前端程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
	<form action="/05-login" method="post">
	    <p>使用者名稱:<input type="text" name="uname" ></p>
	    <p>密碼:&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="upwd"></p>
	    <p>記住密碼:<input type="checkbox" name="isSaved"></p>
	    <input type="submit" value="提交">
	</form>
</body>
</html>

後端程式碼

from flask import Flask, make_response, request, session, render_template, redirect

app = Flask(__name__)
# 配置 SELECT_KEY
app.config['SECRET_KEY']='aixieshaxiesha,yuefuzayuehao%$'

@app.route('/')
def index():
    return "歡迎來到首頁"
    
@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'GET':
        # 判斷是否已經在登入狀態上:判斷session中是否有uname的值
        if 'uname' in session:
            # 已經登入了,直接去往首頁
            return redirect('/')
        else:
            # 沒有登入,繼續向下判斷cookie
            if 'uname' in request.cookies:
                # 曾經記住過密碼,取出值儲存進session
                uname = request.cookies.get('uname')
                session['uname'] = uname
                return redirect('/')
            else:
                # 之前沒有登入過,去往登入頁
                return render_template('login.html')
    else:
        #先處理登入,登入成功繼續則儲存進session,否則回到登入頁
        uname = request.form.get('uname')
        upwd = request.form.get('upwd')
     	# 本文預設正確的賬號密碼為:admin
        if uname=='admin' and upwd=='admin':
            # 宣告重定向到首頁的物件
            resp = redirect('/')
            # 登入成功:先將資料儲存進session
            session['uname'] = uname
            # 判斷是否要記住密碼
            if 'isSaved' in request.form:
                # 需要記住密碼,將資訊儲存進cookie
                resp.set_cookie('uname',uname,60*60*24*365)
            return resp
        else:
            # 登入失敗
            return redirect('/login')

if __name__ == '__main__':
    app.run(debug=True)