我使用的是Flask安全性,它反过来又使用Flask登录。我有一个网站,需要一个用户既确认他们的电子邮件地址,随后由管理员批准。如果没有这两个东西,我不希望用户能够使用该网站。你知道吗
我已经打开了SECURITY_CONFIRMABLE
,带有确认令牌的电子邮件正在正确发送。我已经设置了SECURITY_POST_CONFIRM_VIEW
,用户一旦单击电子邮件中的确认链接,就会被引导到正确的视图。但是,用户登录到as part of the confirmation process。我不想让用户有访问权,直到他们被管理员批准。(有趣的是,this line is not present在develop
分支中。)
我可以想出四种方法来解决这个问题,但没有一种特别吸引人:
允许用户在确认后登录,但是用一个函数装饰每个login_required
视图,该函数检查用户的权限,如果不允许,则将其发送到错误页。我已经有了其中的两个,我更希望避免在每个视图中添加第三个。另外,当用户在获得批准之前不能使用网站时,允许登录是错误的。
关闭SECURITY_CONFIRMABLE
并亲自发送电子邮件/确认令牌。这将需要复制大量的代码和一个错误的机会比我想高。有没有其他方法可以让用户通过登录绕过这个检查呢?说通过密码重置流程?或者如果未来的管理员使用令牌启用无密码登录?
Monkey patch Flask Security的^{
Fork其中一个库并插入一个回调,我可以在代码中实现它。大锤,碰螺母。加上可维护性问题。除非我的公关被接受了。
我希望还有一个答案我忽略了。这不是什么稀奇的安排!你知道吗
幸运的是,解决办法比我担心的要容易得多。UserMixin有一个
is_active
属性,它在Flask登录的login_user
的最开始就被查询。所以我的代码看起来像这样:现在没有具有“挂起”角色的用户可以登录。你知道吗
相关问题 更多 >
编程相关推荐