gpt4 book ai didi

java - 了解 Spring 的身份验证对象及其创建的上下文

转载 作者:行者123 更新时间:2023-12-02 10:54:48 24 4
gpt4 key购买 nike

我正在尝试掌握 Spring-Security,但目前在理解身份验证对象/接口(interface)方面遇到了一些困难,我找到的教程尚未解决这些问题。因此,我将感谢您对以下方面的澄清:

  1. 关于界面本身:

    1.1 创建自己的身份验证接口(interface)实现是否很常见?1.2 这是实现自定义形式的凭据的地方吗?

  2. 我见过很多实现自定义 AuthenticationProvider 的示例,但是:

    2.1。验证方法从哪里获取其验证参数? (我假设如果我在配置中指定开箱即用的表单登录,这就是起源,但如果我不这样做呢?)2.2 是否可以提供我自己的身份验证对象源以供自定义身份验证提供程序使用?

也许我可以通过一个例子更好地解释最后两位。假设我想通过三元组信息提供身份验证,例如用户名、密码以及我给出的第一句话的一首诗的最后两个单词的知识。因此,在这种情况下,我的凭据将从通常的用户/密码场景中扩展。此外,我可能希望将某种形式的后期请求作为这些凭据的来源。

我希望这不是含糊不清。如果我可以做一些事情来完善我的问题,请告诉我,我会尝试。

最佳答案

  1. 如果您满足接口(interface)指定的联系,则可以定义自定义身份验证对象。尽管考虑到您的用例,扩展 UsernamePasswordAuthenticationToken 可能更符合您想要实现的目标。

  2. .authenticate(Authentication a) 是从 ProviderManger(AuthenticationManager 的默认实现)调用的。因此,在创建自定义 AuthenticationProvider 请务必使用 AuthenticationManager 注册它。

可以提供您自己的身份验证对象源。您可以通过设置过滤器来做到这一点。

您可以查看表单登录的默认 spring 过滤器UsernamePasswordAuthenticationFilter,因为这与您的用例很接近。

关于java - 了解 Spring 的身份验证对象及其创建的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51854258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com