是否可以定义多个 authenticationProviders
在Micronaut?
假设我有一个 实体A 可以使用 认证供应商A: 给定一个用户和通行证,检查 A的DB表.
是否可以增加一个 实体B 及其 认证供应商B 给定的用户和通行证将检查 B的DB表如果是这样,你如何在你的控制器中定义哪些是 authenticationProvider
您想要使用的?
在看了一下 io.micronaut.security.authentication.Authenticator
我看到有可能有多个的 authenticationProviders
在Micronaut中。
文档中说。
一个认证器可以在几个
{@link AuthenticationProvider}
实例,返回第一个经过认证的{@link AuthenticationResponse}
.
根据我所看到的,你只需要实施 AuthenticationProvider
和 Authenticator
将会把这些实现包含在一个内部的 AuthenticationProviders
.
IMHO这不是一个很好的提供多种认证方式的方法。在问题中提供的例子中,A和B的认证都需要调用DB,这意味着根据执行顺序的不同,A和B都需要调用DB。AuthenticationProviders
不需要的BD调用将被执行。
我认为最好能提供一种方法来指示哪些是 AuthenticationProviders
必须由控制器或端点使用。也许有办法做到这一点,只是我不知道,如果有,欢迎评论。