在我的authenticationService的登录方法中,我需要创建一个cookie并在cookie中设置 session ID。
将请求对象传递到 Controller 操作内的服务层是一种不好的做法吗?
public void login(String email, String password) {
User user = someService.validate(email, password);
if(user != null) {
// create session
// set cookie ????
}
}
我的 Controller 操作将调用上面的登录方法,但我很困惑应该在哪里为 cookie 创建和设置 session ID。
对我来说,将其放在服务层中是有意义的,但随后我的登录方法会紧密绑定(bind)到 Web 应用程序。
我这样做对吗?
最佳答案
是(“不好的做法”),否(“正确行事”)。
服务层应该与任何与网络有关的东西完全解耦。 Web 层应该单独负责管理 Web 层工件,包括 cookie。
这样,即使不存在 cookie,也可以使用该服务,例如桌面或 CLI 应用程序。它还允许在完全不考虑 Web 层的情况下测试服务,这是有道理的——服务不关心身份验证如何发生,或者之后发生什么——只关心使用用户名和密码有效。
关于java - 在我的服务层中传递 http servlet 响应是一个不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9222126/