使用UserDetailsService的Spring Security身份验证

大卫克洛斯

我对Spring安全认证有一些问题。在我的应用程序中的任何地方,一切正常(CRUD操作正常),但是登录尝试失败。

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

@Service
public class UserServiceImpl implements UserService, UserDetailsService {

    @Autowired
    UserDAO userDAO;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userDAO.getUserByUsername(username); //userDAO == null Causing NPE
        if (user == null)
            throw new UsernameNotFoundException("Oops!");

        List<SimpleGrantedAuthority> authorities = Arrays.asList(new SimpleGrantedAuthority(user.getRole()));

        return new org.springframework.security.core.userdetails
                .User(user.getLogin(), user.getPassword(), authorities);
    }

@Override
    public List<User> getUsers() {
        return userDAO.getUsers();//userDAO !=null
    }
//rest of code skipped

我的SecurityConfig看起来像这样

@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

 UserServiceImpl userService = new UserServiceImpl();

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService);
    }
//rest of code skipped

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

编辑: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;
    }

并且在这种情况下(当调用userService.getUsers()时)userDAO不为null

试图按照Bohuslav Burghardt的建议修复它,我得到了

 method userDetailsService in class org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder 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

在auth.userDetailsS​​ervice(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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Spring Security中定制身份验证

来自分类Dev

Tomcat身份验证和Spring Security

来自分类Dev

Spring Security Rest Basic身份验证

来自分类Dev

Spring Security中的链式身份验证

来自分类Dev

身份验证失败的Spring Security Wildfly

来自分类Dev

ActiveDirectoryLdapAuthenticationProvider和使用userDetailsService的身份验证

来自分类Dev

Spring Security Java配置-虚拟UserDetailsService不通过身份验证

来自分类Dev

Spring Security 4 XML配置UserDetailsService身份验证不起作用

来自分类Dev

使用Spring Security + Spring数据+ MongoDB进行身份验证

来自分类Dev

使用Gmail等Spring Security进行两因素身份验证

来自分类Dev

使用Spring Security无需身份验证和授权

来自分类Dev

使用Java配置的Spring Security预身份验证

来自分类Dev

使用Spring Security / Social调试Facebook身份验证

来自分类Dev

使用kerberos / spnego身份验证的Spring Security

来自分类Dev

使用身份验证回退配置Crowd Spring Security

来自分类Dev

使用Spring Security身份验证存储userId

来自分类Dev

Spring Security-基于令牌的API身份验证和用户/密码身份验证

来自分类Dev

Spring MVC REST + Spring Security +基本身份验证

来自分类Dev

Spring Security身份验证提供程序Java配置

来自分类Dev

LDAP身份验证-Spring Security-LdapAuthenticationProvider

来自分类Dev

如何在Spring Security中撤消身份验证令牌?

来自分类Dev

Spring Security身份验证未给出401错误

来自分类Dev

为什么在Spring Security中对“ anonymousUser”进行身份验证?

来自分类Dev

通过REST端点进行Spring Security身份验证/授权

来自分类Dev

Spring Security预身份验证匹配器

来自分类Dev

Spring Security OAuth2-存储的身份验证对象

来自分类Dev

从服务中获取Spring Security身份验证

来自分类Dev

Spring Security基本身份验证始终导致404

来自分类Dev

Spring Security预身份验证成功处理程序

Related 相关文章

  1. 1

    在Spring Security中定制身份验证

  2. 2

    Tomcat身份验证和Spring Security

  3. 3

    Spring Security Rest Basic身份验证

  4. 4

    Spring Security中的链式身份验证

  5. 5

    身份验证失败的Spring Security Wildfly

  6. 6

    ActiveDirectoryLdapAuthenticationProvider和使用userDetailsService的身份验证

  7. 7

    Spring Security Java配置-虚拟UserDetailsService不通过身份验证

  8. 8

    Spring Security 4 XML配置UserDetailsService身份验证不起作用

  9. 9

    使用Spring Security + Spring数据+ MongoDB进行身份验证

  10. 10

    使用Gmail等Spring Security进行两因素身份验证

  11. 11

    使用Spring Security无需身份验证和授权

  12. 12

    使用Java配置的Spring Security预身份验证

  13. 13

    使用Spring Security / Social调试Facebook身份验证

  14. 14

    使用kerberos / spnego身份验证的Spring Security

  15. 15

    使用身份验证回退配置Crowd Spring Security

  16. 16

    使用Spring Security身份验证存储userId

  17. 17

    Spring Security-基于令牌的API身份验证和用户/密码身份验证

  18. 18

    Spring MVC REST + Spring Security +基本身份验证

  19. 19

    Spring Security身份验证提供程序Java配置

  20. 20

    LDAP身份验证-Spring Security-LdapAuthenticationProvider

  21. 21

    如何在Spring Security中撤消身份验证令牌?

  22. 22

    Spring Security身份验证未给出401错误

  23. 23

    为什么在Spring Security中对“ anonymousUser”进行身份验证?

  24. 24

    通过REST端点进行Spring Security身份验证/授权

  25. 25

    Spring Security预身份验证匹配器

  26. 26

    Spring Security OAuth2-存储的身份验证对象

  27. 27

    从服务中获取Spring Security身份验证

  28. 28

    Spring Security基本身份验证始终导致404

  29. 29

    Spring Security预身份验证成功处理程序

热门标签

归档