依赖
"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有两个重载: