scala/java 谷歌认证器的使用

这篇博客介绍了如何在Scala和Java项目中使用谷歌认证器,包括依赖引入、生成新的secret key以及验证过程。特别指出,secret key的生成不应依赖于`Random.alphanumeric`,而应使用认证器提供的API以确保兼容性。此外,博客还提到授权方法的两种重载形式,并强调了TOTP二次验证码的使用。最后,讨论了如何在返回信息中添加前缀以避免用户名混淆。
摘要由CSDN通过智能技术生成

依赖

"com.warrenstrange:googleauth:1.4.0"

在使用到的文件里import
import com.warrenstrange.googleauth.GoogleAuthenticator

使用代码 (scala版本)

1. 生成新的secret key
  • 坑1:原来用的是Random.alphanumeric方法生成sk,虽然位数一样,但不是每次随机生成的sk都能在认证器app中正常使用。——所以还是老老实实用它的api吧
  • 注1:这段代码保证新生成的sk与数据库中的sk不重复(虽然概率极低)
private def generateGoogleAuthSK() = {
    UserTable.filter(_.gaSk.nonEmpty).map(_.gaSk).result.flatMap(gsSks => {
      val googleAuth: GoogleAuthenticator = new GoogleAuthenticator()
      var gaSk = googleAuth.createCredentials.getKey
      while (gsSks.contains(gaSk)) {
        gaSk = googleAuth.createCredentials.getKey
      }
      DBIOAction.successful(gaSk)
    })
  }
2. 验证
  • 注1:authorize有两个重载:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值