1

我正在考虑为我的一个项目实施两因素身份验证。我见过:https ://github.com/bitbeans/Yubikey
https://github.com/antonioribeiro/google2fa
https://github.com/lahaxearnaud/laravel-u2f

我想把选择权留给我的用户,需要哪些身份验证方法以及需要多少种身份验证方法。因此,我知道我正在考虑编写一些特殊的代码来实现这一目标,但我不确定从哪里开始。

我的目标是让用户不使用任何额外的身份验证方法或允许他们使用所有可用的额外身份验证方法。理想情况下,登录表单只需要用户名/密码;输入正确的凭据后,用户将被引导到用户选择使用的每种身份验证方法的新页面。

laravel-u2f 使用中间件;我并不反对这样做,但似乎需要为每个请求处理太多额外的逻辑,而不仅仅是在用户登录时。

我曾考虑更换默认的 Auth 驱动程序,但我不确定这是最好的做法。

我最后的想法;我倾向于监听“auth.attempt”事件并使用它来检查需要进行哪些额外的身份验证。但是我不确定如何处理从中获取其他身份验证信息的最佳方法。

所以我发布的原因是寻找实现我正在寻找的最佳方式的输入。

4

1 回答 1

1

您可以放置​​一个值,例如full_authenticated

Session::put('full_authenticated', 'false');

并在现有的认证中间件中使用。这样,您可以将中间件部分中的逻辑简化为一个比较。

如果您想稍后添加更多身份验证方法,您应该为通用身份验证方法实现接口/合同。然后编写一个身份验证管理器类,它在会话中设置 full_authenticated 并为不同用户处理不同的方法。

于 2015-06-29T02:36:17.220 回答