我正在考虑为我的一个项目实施双因素身份验证。我见过:https://github.com/bitbeans/Yubikey
https://github.com/antonioribeiro/google2fa
https://github.com/lahaxearnaud/laravel-u2f
我希望将选择留给我的用户,在哪些以及需要多少身份验证方法。因此我知道我正在考虑编写一些特殊的东西来实现这一目标,但我不知道从哪里开始。
我的目标是让用户不使用任何其他身份验证方法,或允许他们使用所有其他可用的身份验证方法。理想情况下,登录表单只需要用户名/密码;输入正确的凭证后,用户将被引导到用户选择使用的每种认证方法的新页面。
laravel-u2f使用中间件;我不反对这样做,但似乎有太多额外的逻辑来处理每个请求,而不仅仅是在记录用户时。
我考虑过更换默认的Auth驱动程序,但我不确定这是最好的事情。
我最后的想法;而我倾向于倾听“auth.attempt”事件并使用它来检查需要进行哪些额外的身份验证。但我不确定如何处理从中获取其他身份验证信息的最佳方法。
因此,我发布的原因是寻找最佳方式的输入,以实现我正在寻找的目标。
答案 0 :(得分:1)
您可以放置一个值,例如 full_authenticated
Session::put('full_authenticated', 'false');
并在现有的身份验证中间件中使用它。 这样,您可以将中间件部分中的逻辑切换为一个比较。
如果要稍后添加更多身份验证方法,则应实现通用身份验证方法的接口/协定。 然后编写一个身份验证管理器类,在会话中设置full_authenticated,并为不同的用户处理不同的方法。