4

当我尝试通过数据库中的 LDAP 对用户进行身份验证时,出现以下错误。

Reason: Cannot pass null or empty values to constructor.

谁能告诉我做错了什么?

<?xml version="1.0" encoding="UTF-8"?>  
<beans:beans xmlns="http://www.springframework.org/schema/security" 
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">  

<http auto-config="true">
<intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" />
<intercept-url pattern="/administrator.htm" access="ROLE_ADMIN" />
<!-- <form-login login-page="/dashboard.htm" default-target-url="/dashboard.htm" authentication-failure-url="/ExceptionPage.jsp" /> -->
<form-login/>
</http>

<authentication-manager>
<authentication-provider>
<!--   <user-service>
<user name="20022263" password="da" authorities="ROLE_USER" />
<user name="20039004" password="da" authorities="ROLE_ADMIN" />
</user-service> -->
   <jdbc-user-service data-source-ref="dataSource" 
users-by-username-query="SELECT a.GLOBALID AS username, a.PASSWORD AS password, a.Enabled AS enabled FROM EU_MAS_TBUSER a WHERE a.GLOBALID=?" 
 authorities-by-username-query="select eu.USERNAME AS username, r.ACCESSROLEID AS authority from EU_MAS_TBUSER eu, EU_MAS_TBUSERS_ROLE r where eu.GLOBALID = r.GLOBALID and eu.GLOBALID=?" 
 role-prefix="ROLE_"/>   
</authentication-provider>

 </authentication-manager>

</beans:beans>
4

2 回答 2

23

产生异常的实际行在这里。创建用户对象的相关代码在这里

所以我最好的猜测是你在数据库中有一个用户的空密码字段。

请注意,如果您发布这样的错误,如果您提供堆栈跟踪和服务器日志中的相关调试输出,则更容易回答。

于 2012-09-28T10:54:32.197 回答
0

HTTP 状态 401:无法将空值或空值传递给构造函数

服务器期待一个查询参数,但您在其中发送了错误的值。

所以更简单的答案是:

我们需要发送服务器期望的有效查询参数。

于 2021-01-21T11:02:50.543 回答