【问题标题】:Spring Custom User Details from DAL - Casting来自 DAL 的 Spring 自定义用户详细信息 - 铸造
【发布时间】:2012-07-20 15:18:56
【问题描述】:

我目前正在开发一个使用 Spring Security 的系统。我已经设置了身份验证提供程序,但在创建自定义用户类型时遇到了问题,该用户类型将存储我需要的所有信息。

在身份验证提供程序中,我调用“用户服务”,它是系统中用户的 DAL。然后返回一个“用户”对象。这很好,一切正常。

然后我定义了一个 MyCompanyUserDetails 对象,其中包含我需要的所有自定义属性。该类扩展了“用户”类。

我的问题是我无法将用户转换为 CompanyUserDetails。我在这里错过了什么吗?

自定义用户详细信息类型:

public class MyCompanyUserDetails extends User {

在我的身份验证提供程序中:

// Create / Update the user.
User raw_user_details = getUser(username_str, groups_of_user);

// Create our Custom user object filled with the parameters we need for the rest of the system.
MyCompanyUserDetails details = (MyCompanyUserDetails) raw_user_details;

我收到的异常:

java.lang.ClassCastException: User cannot be cast to MyCompanyUserDetails

任何帮助/指导将不胜感激...

【问题讨论】:

  • 您可以提供任何错误或异常吗?
  • MyCompanyUserDetails 是哪个类?您提到了扩展UserCompanyUserDetails 类。如果MyCompanyUserDetails 还扩展了User 类,那么您正在尝试向下转换实例变量,我认为这是不可能的,这就是为什么您必须得到该异常
  • 我很抱歉他们是同一班人。
  • 那一定是向下转换的问题
  • 我猜你需要以 loadUserByUsername 方法返回 MyCompanyUserDetails 实例的方式实现自己的 UserDetailsS​​ervice

标签: java spring casting data-access-layer


【解决方案1】:

Shades88 在评论中指出,这是一个简单的向下转换问题

【讨论】:

    猜你喜欢
    • 2012-05-23
    • 2017-06-05
    • 2021-09-09
    • 2017-12-11
    • 2013-12-13
    • 2011-06-24
    • 2023-04-09
    • 2010-09-15
    • 2015-07-05
    相关资源
    最近更新 更多