我在我的Ktor应用程序中有一个路由,我想选择性地进行身份验证。最好的方法是什么?如果我放入两个路由块,两个调用都默认为未经身份验证的一个。
例如
routing {
post("/my-route") {
val request = call.receive<MyRouteRequest>()
...
}
authenticate(Constants.myAuthScope) {
post("/my-route") {
val request = call.receive<MyRouteRequest>()
val user = call.principal<User>()
...
}
}
2条答案
按热度按时间hujrc8aj1#
应该可以使用更明确的模型,并结合对路由或底层服务中的模型进行验证(取决于这被视为域逻辑还是API逻辑)
对于基本auth,它看起来有点像:
现在可以做到:
当然,这种模式应该应用于您实际使用的任何身份验证方案,例如JWT,OAuth,LDAP等。
g52tjvyc2#
尝试
authenticate
的optional
参数,如