如何在Spring Security上下文中转换UserDetails?

时间:2014-10-18 00:29:44

标签: java spring-security

我有一个像这样的类Customer

public class MyCustomer {
   public String username;
   public String email;
   public String password;
}

我有一个实现UserDetailsS​​ervice

的类服务
@Override
public UserDetails loadUserByUsername(String username)
          throws UsernameNotFoundException, DataAccessException
{
   MyCustomer customer = customerDao.findByName(username);
   return new User(customer.getName(), customer.getEmail(), true, true, true, true, customer.getRoles())
}

如何在控制器类中获取MyCustomer?我试过这个,但不幸的是,它不起作用。

MyCustomer customer = (MyCustomer)SecurityContextHolder.getContext().getAuthentication().getPrincipal();

1 个答案:

答案 0 :(得分:0)

不,由于User无法投放到MyCustomer,因此无法正常工作。

您可以让User类实现MyCustomer接口,而不是创建UserDetails实例。

public class MyCustomer implements UserDetails {
    // implementation of UserDetails methods
}

然后,您只需从UserDetailsS​​ervice返回MyCustomer实例。