給密碼加密和解密的方法


from werkzeug.security import generate_password_hash,check_password_hash

 

#book模型,傳入db核心對象把Book插入db
class User(UserMixin,Base):
  __tablename__ = 'user'
  id = Column(Integer,primary_key=True)
  nickname = Column(String(24), nullable=False)
  phone_number = Column(String(18), unique=True)
  _password=Column("password",String(228), nullable=False)
  email = Column(String(50), unique=True, nullable=False)
  confirmed = Column(Boolean, default=False)
  beans = Column(Float, default=0)
  send_counter = Column(Integer, default=0)
  receive_counter = Column(Integer, default=0)
  wx_open_id =Column(String(50))
  wx_name =Column(String(32))


@property
def password(self):
  return self._password

@password.setter
def password(self,raw):
  self._password=generate_password_hash(raw)

def check_password(self,raw):
  return check_password_hash(self._password,raw)

裝飾器原理: https://www.cnblogs.com/kaibindirver/p/12892064.html

視圖函數

@web.route('/register', methods=['GET', 'POST'])
def register():
  form=RegisterForm(request.form)
  if request.method =="POST" and form.validate():
    user=User()
    user.set_attrs(form.data)
    db.session.add(user)
    db.session.commit()
    return redirect(url_for("web.login"))

return render_template("auth/register.html",form=form)

 

@web.route('/login', methods=['GET', 'POST'])
def login():
  form=LoginForm(request.form)
  if request.method =="POST" and form.validate():
    user= User.query.filter_by(email=form.email.data).first()
    if user and user.check_password(form.password.data):
      login_user(user)
      flash("登錄成功")
  else:
    flash("賬號不存在或密碼錯誤")

  return render_template("auth/login.html",form=form)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM