gpt4 book ai didi

java - 对密码编码器的服务层进行封装

转载 作者:行者123 更新时间:2023-12-01 09:38:00 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

但是,如果您确实希望将服务层与第三方库隔离,您可以创建一个用于对密码进行编码的接口(interface),然后使用您自己的包装 BCryptPasswordEncoder 的类来实现它,并注入(inject)该接口(interface)实现到您的服务对象中,服务对象仅查看和导入接口(interface)。

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

关于java - 对密码编码器的服务层进行封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38685372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com