Java Spring安全“按用户名查询权限”错误

Java Spring安全“按用户名查询权限”错误,java,mysql,sql,spring,Java,Mysql,Sql,Spring,我正在尝试使用spring security编写授权查询 我有用户组,例如admin、User和每个usergrup都有权限记录读取、记录写入 &用户与用户组映射 我正在尝试编写一个查询,它给我提供用户名和所需的权限 选择不同的 ug.USERNAME,gr.grupRights 从…起 格鲁普里茨酒店, 用户Grups ug 哪里 ugm.grupName=grm.grupName和ug.USERNAME=?和select中的gr.grupName grupName 从…起 用户群 哪里 用户

我正在尝试使用spring security编写授权查询

我有用户组,例如admin、User和每个usergrup都有权限记录读取、记录写入 &用户与用户组映射

我正在尝试编写一个查询,它给我提供用户名和所需的权限

选择不同的 ug.USERNAME,gr.grupRights 从…起 格鲁普里茨酒店, 用户Grups ug 哪里 ugm.grupName=grm.grupName和ug.USERNAME=?和select中的gr.grupName grupName 从…起 用户群 哪里 用户名=

我得到一个错误:

嵌套异常为java.sql.SQLException:未为指定值 参数2


我在spring security.xml中使用authorities by username查询,这意味着查询需要两个参数,我看到两个?在查询中,但您只指定了一个。您需要两次传递username,这意味着查询需要两个参数,我看到两个了吗?在查询中,但您只指定了一个。您需要两次传递用户名

我甚至没有传递第一个参数,因为它是由spring授权机构通过用户名查询标记传递的。您应该传递2个参数,否则您的查询肯定是错误的。当我在查询中硬编码用户名时,查询工作正常,但在spring-security.xml中使用授权机构通过用户名查询时它不工作。。。现在我明白了,问题是spring security希望users by username查询和Authority by username查询具有一个参数username,因此如果您的查询包含两个参数,如username=?电子邮件=?或者在您的情况下用户名=?用户名=?查询将失败。您可以做的是实现您自己的UserDetails服务,该服务将执行一个或多个查询以搜索用户。。。如果不修改查询,使其只接受一个参数。我甚至没有传递第一个参数,因为它是由spring授权机构通过用户名查询标记传递的。您应该传递2个参数,否则您的查询一定是错误的。当我在查询中硬编码用户名时,查询工作正常,但在spring-security.xml中使用用户名queryah的权限时,它不起作用。。。现在我明白了,问题是spring security希望users by username查询和Authority by username查询具有一个参数username,因此如果您的查询包含两个参数,如username=?电子邮件=?或者在您的情况下用户名=?用户名=?查询将失败。您可以做的是实现您自己的UserDetails服务,该服务将执行一个或多个查询以搜索用户。。。如果没有,请修改查询,使其仅接受一个参数。