Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用UserDetailsService的Spring安全身份验证_Java_Spring_Spring Security - Fatal编程技术网

Java 使用UserDetailsService的Spring安全身份验证

Java 使用UserDetailsService的Spring安全身份验证,java,spring,spring-security,Java,Spring,Spring Security,我对Spring安全认证有一些问题。 在我的应用程序中,无论什么地方,一切都很好(CRUD操作很好),但登录尝试失败 这是我的代码(我在下面用注释标记,其中userDAO为null,这是身份验证失败的原因): 我标记了我在哪里得到NPE,我不知道如何解决这个问题。整个配置都是基于Java的,您可以在这里查看更多详细信息 EDIT:getUsers()在控制器中以这种方式调用: @Controller public class LoginController { @Autowired

我对Spring安全认证有一些问题。 在我的应用程序中,无论什么地方,一切都很好(CRUD操作很好),但登录尝试失败

这是我的代码(我在下面用注释标记,其中userDAO为null,这是身份验证失败的原因):

我标记了我在哪里得到NPE,我不知道如何解决这个问题。整个配置都是基于Java的,您可以在这里查看更多详细信息

EDIT:getUsers()在控制器中以这种方式调用:

@Controller
public class LoginController {
    @Autowired
    UserService userService;

 @RequestMapping(value = "/dashboard")
    public ModelAndView userDashboard(){
        ModelAndView modelAndView = new ModelAndView("Dashboard");
        List<User> userList = userService.getUsers();
        modelAndView.addObject("users", userList);
        return modelAndView;
    }
一致
auth.userDetailsService(userService)

这是不正确的部分:

UserServiceImpl userService = new UserServiceImpl();
当您自己实例化该服务时,其自动关联依赖项将始终为
null
。您必须让Spring容器实例化它(已通过使用
@service
标记服务来完成),然后将其注入到您的安全配置类中,如下所示:

public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserDetailsService userService;
}

Bohuslav的这段代码解决了这个问题

public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserService userService;
}
也失踪

@ComponentScan("com.gi")
以前

public class SecurityConfig extends WebSecurityConfigurerAdapter {
缺乏这一点导致

Error:(24, 13) java: method userDetailsService in class org.springframework.security.config.annotation.authentication.builders.Authentic‌​ationManagerBuilder cannot be applied to given types; required: T found: com.gi.service.UserService reason: inferred type does not conform to upper bound(s) inferred: com.gi.service.UserService upper bound(s): org.springframework.security.core.userdetails.UserDetailsService

当我试图按照您的方式修复它时,它显示了错误:(24,13)类org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder中的java:method userdetails服务无法应用于给定的类型;必需:T found:com.gi.service.UserService原因:推断类型不符合上限推断:com.gi.service.UserService上限:org.springframework.security.core.userdetails。UserDetailsService@d__k您可以通过以下三种方式之一进行修复:1)将服务自动连接为private UserDetails服务userService,2)让您的UserService接口扩展UserDetailsService接口,然后让您的实现类只实现UserService,或者3)在配置类中将UserService强制转换为UserDetailsService尝试了两种方法并得到:`没有类型为[com.gi.service.UserService]的合格bean】为依赖项找到:至少需要1个符合此依赖项autowire候选项条件的bean。`您可以随时在github上查看我的代码以获得更广泛的视角
@ComponentScan("com.gi")
public class SecurityConfig extends WebSecurityConfigurerAdapter {
Error:(24, 13) java: method userDetailsService in class org.springframework.security.config.annotation.authentication.builders.Authentic‌​ationManagerBuilder cannot be applied to given types; required: T found: com.gi.service.UserService reason: inferred type does not conform to upper bound(s) inferred: com.gi.service.UserService upper bound(s): org.springframework.security.core.userdetails.UserDetailsService