Reprator
09/30/2020, 7:18 PMpackage com.firstapp.auth
import com.auth0.jwt.JWT
import com.auth0.jwt.JWTVerifier
import com.auth0.jwt.algorithms.Algorithm
import io.ktor.auth.Principal
import java.util.*
object JwtConfig {
private const val secret = "my-secret" // use your own secret
private const val issuer = "com.imran" // use your own issuer
//private const val validityInMs = 10 // 1 day
private const val validityInMs = 36_000_00 * 24 // 1 day
private val algorithm = Algorithm.HMAC512(secret)
val verifier: JWTVerifier = JWT
.require(algorithm)
.withIssuer(issuer)
.build()
/**
* Produce a token for this combination of name and password
*/
fun generateToken(JWTUser: JWTUser): String = JWT.create()
.withSubject("Authentication")
.withIssuer(issuer)
.withClaim("name", JWTUser.name)
.withClaim("password", JWTUser.password)
.withExpiresAt(getExpiration()) // optional
.sign(algorithm)
/**
* Calculate the expiration Date based on current time + the given validity
*/
private fun getExpiration() = Date(System.currentTimeMillis() + validityInMs)
}
data class JWTUser(val name: String, val password: String, val other:String="default"): Principal
And then how to use refresh token?Joost Klitsie
10/01/2020, 7:11 AMReprator
10/01/2020, 5:58 PMJoost Klitsie
10/01/2020, 6:00 PM