当前位置: 首页 > 知识库问答 >
问题:

Spring Security-如何为UserDetailsService提供附加参数

濮阳耀
2023-03-14

我需要为Spring Security的< code>UserDetailsService实现提供一个可选的附加参数。

举个简单的例子,假设我需要为属于用户的宠物传递一个宠物ID。

并非所有用户都有宠物,但如果它们有宠物,则实现用户详细信息的 Person 类有一个需要在登录时检索的宠物。

以下是我迄今为止所尝试的:

如何通过Spring安全登录页面传递附加参数

公认答案的问题是,UserDetailsService实现在意识到HttpRequest

我研究过的其他方法包括定制AuthenticationDetailsAuthenticationDetailsSource,但这也让人感觉不对,因为

我知道我可以用这些方法中的一种来工作,但它们感觉不干净。有人想出解决这个问题的好办法吗?不需要找人为我编写代码,只需要寻找一种通用的方法。

非常感谢你!

共有1个答案

孟成文
2023-03-14

我认为可能对用户详细信息的目的有误解。查看Javadoc用户详细信息是关于用户如何与您的应用程序/系统的安全设备相关联。正如方法摘要所示;getPassword、getUsername、get授权等,本质上是这个人是谁(AuthC)以及他们能做什么(AuthZ)。加载用户的宠物信息更多的是一个业务问题,应该在单独的服务PetService.doesUserHavePet(User)PerService.loadPet(User)中处理,而不是在您的UseDetailsService实现中,它应该从您的组织目录服务和/或用户存储中加载用户信息。我认为你发现每种方法都不如干净的原因是你试图将两个概念/责任合并到一个类中。

 类似资料:
  • 问题内容: 我正在使用JDK 1.6.0_26中的VisualVM来分析在Tomcat下运行的Java Webapp,但是VisualVM经常告诉我它没有足够的内存来拍摄快照,并使用-Xmx开关为Netbeans提供更多的内存。 。问题是,我在Netbeans之外运行VisualVM,那么如何为jvisualvm.exe提供JVM参数? 问题答案: 应该能够修改内存中的设置 并且在排队。

  • 我正在使用和来记录WebApi2项目。我有一个使用XML正文并返回文本响应的操作。我希望留档包含XML输入的示例-例如

  • 问题内容: 如何将sql_variant参数添加到SQL CLR存储过程?使用System.Object不起作用,并且我看不到任何可以使用的属性。 问题答案: 在“从SQL Books Online映射CLR参数数据”中,列出了“对象”作为用于映射sql_variant的正确类型。 我创建了一个简单的SQL Server项目,并向其中添加了以下类: 然后,我修改了test.sql文件以执行此存储的

  • 标准中似乎没有规则提到模板参数需要默认参数的情况。 在dcl中。fct。默认值#1 如果在参数声明中指定了初始化子句,则将此初始化子句用作默认参数。缺省参数将用于缺少尾随参数的调用。 在本节中,规则明确描述了何时为函数调用提供默认参数。但是,我在标准中没有找到与上面描述何时提供默认参数作为模板参数的语句类似的引用。 例如

  • 根据“GET”信封或“ListStatusChange”API文档,它们都支持查询参数“include”来获取附加信息(不仅仅是信封名称、状态和电子邮件主题)。EX:指定要返回的有关信封的其他信息。输入逗号分隔的列表,如选项卡、收件人。有效值有:选项卡、收件人、文档、custom_fields、附件、扩展等。 但是我在DocuSign提供的REST API explorer上尝试了这个带有上述关键

  • 我试图通过POST方法将参数发送到php到mysql。我的代码似乎没有将参数加载到httpPost中。调试时,我看到httpPost变量下的参数为null,并且似乎没有拾取实体。如果您有任何帮助,我们将不胜感激。我正在使用android studio。 主要活动 写数据库。java构建列表Namevaluepairs } 我的JSONParser。 } 还有我的Logcat