由於對密碼要進行加密,並且不期望被外界呼叫,所以,將密碼設定為私有屬性,利用@property和@password.setter設定兩發方法為屬性,以便外界呼叫(加密後,非明文)
class
user
(db.model)
: __tablename__ =
'user'
id= db.column(db.integer, primary_key=
true
) username = db.column(db.string(15)
, nullable=
false
) _password = db.column(db.string(
128)
)# 設定訪問密碼的方法,並用裝飾器@property設定為屬性,呼叫時不用加括號
@property
defpassword
(self)
:return self._password
# 設定加密的方法,傳入密碼,對類屬性進行操作
@password.setter
defpassword
(self, value)
: self._password = generate_password_hash(value)
# 設定驗證密碼的方法
defcheck_password
(self, user_pad)
:return check_password_hash(self._password, user_pad)
上述**實現了主要功能。需要新增使用者時,直接例項化user物件並且傳入引數即可。
完整**如下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @author: shuaigeek
# @date : 2020/6/25
from flask import flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import sqlalchemy
from flask_wtf import flaskform
from werkzeug.security import generate_password_hash, check_password_hash
'sqlalchemy_database_uri']=
'mysql+pymysql://使用者名稱:密碼@127.0.0.1/資料表名'
'sqlalchemy_track_modifications']=
false
'secret_key']=
'geeksecretkey'
class
user
(db.model)
: __tablename__ =
'user'
id= db.column(db.integer, primary_key=
true
) username = db.column(db.string(15)
, nullable=
false
) _password = db.column(db.string(
128)
) @property
defpassword
(self)
:return self._password
@password.setter
defpassword
(self, value)
: self._password = generate_password_hash(value)
defcheck_password
(self, user_pad)
:return check_password_hash(self._password, user_pad)
'/', methods=
['post'
,'get'])
defindex()
:if request.method ==
'post'
: un = request.form[
'username'
] pd = request.form[
'password'
] user = user(username=un, password=pd)
db.session.add(user)
db.session.commit(
)return
'註冊成功'
return
""""""
'/login/'
, methods=
['post'
,'get'])
deflogin()
:if request.method ==
'post'
: name = request.form[
'username'
] pawd = request.form[
'password'
] user = user.query.filter_by(username=name)
.first(
)if user:
if user.check_password(pawd)
:return
'登陸成功'
else
:return
'登陸失敗'
return
'使用者不存在'
return
""""""
if __name__ ==
'__main__'
: db.drop_all(
) db.create_all(
)true
)
python flask 簡單登陸web製作(上)
剛學flask,感覺flask真的很簡潔。然後做了乙個很低階的登陸頁面。就當一次小筆記,希望之後還可以補充。首先要pip install flask配置好flask,然後我用的notepad 來編輯 用git來做版本控制。然後在config.py中新增下面的 class config object ...
登陸mysql s MySQL登陸退出
單例項登陸mysql mysql mysql uroot 適合剛安裝後無密碼 mysql uroot p 標準登陸的方法 mysql uroot p password 密碼明文會洩露密碼,一般用於指令碼中,指令碼許可權root 700 多例項登陸mysql mysql s data 3307 mys...
用事物實現登陸
1.在ado中使用儲存過程 use userdb1 select from t users create proc usp login uname varchar 50 password varchar 50 result bit output 布林型別的引數,是用來返回值的,設定儲存使用者登入是否...