day8 介面開發 login

2022-06-08 13:00:17 字數 2145 閱讀 9141

@server.route('/login',methods = ['get','post'])

def login():

username = request.values.get('username','') # 獲取引數使用者名稱,如果沒有獲取到,預設是空字串

password = request.values.get('password','') # 獲取引數密碼,如果沒有獲取到,預設是空字串

if username.strip() and password.strip():

password = md5_passwd(password) # 加密後的密碼

sql = 'select id,username from user where username="%s" and password="%s";' % (username,password)

sql_res = conn_mysql(sql) # 獲取資料庫結果

print('sql_res...',sql_res) # 這行有沒有無所謂

if sql_res: # 如果獲取到,證明資料庫裡有該使用者

sign_str = username + str(int(time.time())) # 拼接簽名,time.time()返回的是浮點型資料

sign = md5_passwd(sign_str) # 加密後的簽名

op_redis(username, sign) # 把使用者名稱和簽名寫到redis裡

return '' % (sign, username)

# user_id = sql_res['id'] # 獲取用user表裡的的id,即第乙個字段,一共四個字段

# return '' % (sign,user_id)

# 如果返回userid,還得通過userid去mysql資料庫裡取username,然後通過username去redis資料庫裡取簽名,影響效能

# 所以上面直接返回username,然後去redis資料庫裡拿到簽名這樣省了一步

# response = make_response('' % (sign, username))

# response.set_cookie(username,sign) # 設定cookies

# return response

else:

return my_json(login_fail)

else:

return my_json(not_null)

在登入介面裡匯入make_response就可以往瀏覽器裡set cookies,這種方式不安全,會導致cookie盜用,如下圖可以在瀏覽器裡看到set到瀏覽器裡的使用者名稱和sign

client發起請求,把username和password傳到服務端,服務端進行校驗,驗證通過後,服務端返回請求,並把cookie set到客戶端,下次客戶端進行新增使用者資訊時把資訊傳到服務端,同時瀏覽器把cookie也發到服務端,服務端進行校驗,通過request.values.get方法把客戶端發過來的cookie get到,然後去和redis裡面的進行對比,對比通過就可以進行後續的操作

就是在day8_api->api->api.py的add_stu2介面裡,指令碼改成這樣

就實現了把sign寫到cookies裡,如下面三個圖的設定以及列印出cookies裡的sign

登入介面開發完成後,會在redis資料庫裡生成登入的使用者名稱和簽名,如下圖:

同時也可以在mysql資料庫裡看到登入成功的使用者名稱、密碼和userid,如下圖:

DAY8 介面通訊

day8 介面通訊 注意 延展中寫的東西只能在類內使用 pragma mark 屬性傳值 第乙個頁面往第二個頁面傳值 一 屬性傳值 第乙個頁面往第二個頁面傳值 屬性傳值 可以自定義屬性 也可使用控制項 檢視的自帶屬性 1 屬性傳值用於第乙個介面向第二個頁面傳值 2 明確兩者聯絡的橋梁,也就是觸發跳轉...

Jquery Pdo編寫login登陸介面

的cdn來在網頁載入時直接從網上獲取庫檔案支援。使用 google 的 cdn 支援。pdo是用來代替mysql或者mysql等來處理資料庫的。只要在php.ini檔案中去掉 extension php pdo.等被注釋掉的有關pdo的.dll文 件。同時從php5開始,php預設開啟pdo驅動,所...

物件導向8(介面)

概念 使用inte ce修飾的 塊。語法 訪問修飾符 inte ce 介面名 訪問修飾符 暫時使用public inte ce 關鍵字,含義是介面。介面名 識別符號。介面成員 靜態常量,抽象方法。inte ce inter class method implements inter public c...