如何在有限的时间内对匿名用户进行身份验证/授权?

Kam*_*ski 9 php symfony symfony-security

假设我有一个发票实体.发票属于某个用户(invoices.user_id).

如果用户输入myapp.com/invoices/1,则需要登录才能访问其发票.这很正常.

有时invoices.user_id为空(发票所有者在我们的系统中没有帐户),但我们有一个invoices.phone_number列.

目标是为我们系统中没有帐户的用户创建基于SMS代码验证的身份验证系统.如果用户确认他确实拥有与发票相关的电话号码(代码验证),我想授予他临时访问权限(15分钟)到此发票详细信息页面(仅限此页面).

我的第一个想法是使用存储在会话中的JWT令牌.

我的第二个想法是使用自定义防火墙.

有没有更好的方法?

emi*_*mix 7

创建一个kernel.request 监听器.这样,您可以在执行任何操作之前执行操作,并且整个应用程序无视用户可以在任何时间注销的事实.

调用将验证令牌的"服务".如果令牌无效,请清除身份验证状态并覆盖请求.例如,将用户重定向到"您需要再次付款"页面.

这样您就不需要修改任何代码,执行任何选民等等,您的整个应用程序都可以受到保护.

至于身份验证本身,请选择自定义防护,您可以在其中完全控制身份验证过程的工作方式.