在我的服务层中传递http servlet响应是不好的做法?

Bla*_*man 2 java spring servlets spring-mvc

在我的authenticationService的登录方法中,我需要创建一个cookie并在cookie中设置会话ID.

将请求对象传递给控制器​​操作中的服务层是不好的做法吗?

public void login(String email, String password) {

   User user = someService.validate(email, password);

   if(user != null) {
      // create session
      // set cookie ????
   }

}
Run Code Online (Sandbox Code Playgroud)

我的控制器操作将调用上面的登录方法,混淆我应该创建的位置并为我的cookie设置会话ID.

在服务层中使用它是有意义的,但是然后我的登录方法紧紧绑定到Web应用程序.

我这样做了吗?

Dav*_*ton 6

是(对"不良做法"),不对(做"做对了").

服务层应该与任何与Web有关的东西完全分离.仅Web层应负责管理Web层工件,包括cookie.

这样即使不存在cookie(例如桌面或CLI应用程序),也可以使用该服务.它还允许在不考虑Web层的情况下测试服务,这是有道理的 - 服务并不关心如何进行身份验证,或者之后发生的事情 - 仅使用用户名和密码.