View - 用户认证视图¶
-
app.auth.views.
before_request
()[源代码]¶ 注解
处理程序中过滤未确认的账户
同时满足以下 3 个条件时, before_app_request 处理程序会拦截请求。
1.用户已登录( current_user.is_authenticated() 必须返回 True )。
2.用户的账户还未确认。
3.请求的端点(使用 request.endpoint 获取)不在认证蓝本中。 访问认证路由要获取权限,因为这些路由的作用是让用户确认账户或执行其他账户管理操作。
-
app.auth.views.
confirm
(token)[源代码]¶ 注解
确认用户的账户
先检查已登录的用户是否已经确认过,如果确认过,则重定向到首页, 因为很显然此时不用做什么操作。
这样处理可以避免用户不小心多次点击确认令牌带来的额外工作。
由于令牌确认完全在 User 模型中完成,所以视图函数只需调用 confirm() 方法即可, 然后再根据确认结果显示不同的 Flash 消息。
确认成功后, User 模型中 confirmed 属性的值会被修改并添加到会话中, 请求处理完后,这两个操作被提交到数据库。