给密码加密和解密的方法
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)
相关文章
- 如果忘记了mysql密码怎么办?
- mysql 5.5版本 忘记root密码
- vue.js帐号,密码,邮箱和移动手机号码正则验证
- 用彩虹表破解MD5、LM Hash等复杂加密密码
- 玩转git第3节-2:查看以及修改用户名、密码、邮箱
- 方法二:Excel 2016 VBA工程密码破解
- 趋势科技杀毒软件被曝严重漏洞,黑客能够窃取你的所有密码
- svn 插件去除已经保存的密码方法
- Ubuntu 12.04(所有ubuntu发行版都适用)sudo免输入密码
- ***在Linux环境下mysql的root密码忘记解决方法(三种)-推荐第三种
- ***linux下mysql的root密码忘记解决方法
- ESXi重置密码以及修改网络IP地址的方法
- Windows 2016 忘记密码的处理方法
- Sqlserver 命令行方式修改 用户密码的方法
- httpclient 用户名密码认证实例
- Ubuntu下忘记MySQL密码重设方法
- 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
- 作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
- 解锁前端密码框常见功能做法
- 静态密码已经"OUT" 探索身份验证新方式
- oracle修改用户密码的方法
- SSH无密码验证登录的实现(转摘)