werkzeug.security.generate_password_hash()
用来为给定的密码生成密码散列值,而 werkzeug.security.check_password_hash()
则用来检查给定的散列值和密码是否对应。使用示例如下所示:User
模型类添加 username
字段和 password_hash
字段,分别用来存储登录所需的用户名和密码散列值,同时添加两个方法来实现设置密码和验证密码的功能:admin()
函数:click.option()
装饰器设置的两个选项分别用来接受输入用户名和密码。执行 flask admin
命令,输入用户名和密码后,即可创建管理员账户。如果执行这个命令时账户已存在,则更新相关信息:current_user
变量,注册这个函数的目的是,当程序运行后,如果用户已登录, current_user
变量的值会是当前用户的用户模型类记录。UserMixin
类:User
类拥有几个用于判断认证状态的属性和方法,其中最常用的是 is_authenticated
属性:如果当前用户已经登录,那么 current_user.is_authenticated
会返回 True
, 否则返回 False
。有了 current_user
变量和这几个验证方法和属性,我们可以很轻松的判断当前用户的认证状态。login_user()
函数实现,需要传入用户模型类对象作为参数。下面是用于显示登录页面和处理登录表单提交请求的视图函数:logout_user()
函数,使用下面的视图函数实现:login_required
装饰器就可以将未登录用户拒之门外。以删除条目视图为例:login_manager.login_view
的值设为我们程序的登录视图端点(函数名),把下面这一行代码放到 login_manager
实例定义下面即可:提示 如果你需要的话,可以通过设置login_manager.login_message
来自定义错误提示消息。
login_required
,而是在函数内部的 POST 请求处理代码前进行过滤:if
判断:current_user.is_authenticated
)。如果用户没有登录(current_user.is_authenticated
返回 False
),就不会渲染表单部分的 HTML 代码,即上面代码块中 `