【问题标题】:Encapsulating of service layer from Password Encoder从 Password Encoder 封装服务层
【发布时间】:2016-12-05 17:43:25
【问题描述】:

在我的服务层中,我有更新电子邮件的方法:

@Override
public void updateUserEmail(String email, String newEmail, String password) throws InvalidPasswordException, DuplicateEmailException {

    Client client = getSpecializedUserByEmail(email);
        /*....*/
}

密码 - 由用户输入,但为了检查它是否匹配真实,我必须在我的服务层使用 BCryptPasswordEncoder - 但它违反了服务的封装层。 我可以在控制器中使用密码检查 - 但这是不好的做法。 请帮助,我将非常感激)

【问题讨论】:

    标签: java spring-mvc model-view-controller service-layer


    【解决方案1】:

    我不确定您为什么认为在服务中使用 BCryptPasswordEncoder 会破坏封装。

    但是,如果你的意思是你真的想将你的服务层与第三方库隔离,你可以创建一个用于编码密码的接口,然后用你自己的包装 BCryptPasswordEncoder 的类来实现它,然后注入它实现到你的服务对象中,服务对象只看到和导入接口。

    这样,你的服务对象与编码器的耦合非常松散,可以改变编码器的内部实现而不影响服务对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多