java - 在我的服务层中传递 http servlet 响应是一个不好的做法吗?

标签 java spring servlets spring-mvc

在我的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/

相关文章:

java - 主题切换后 Intellij 插件 JBTabbedPane UI 被替换

java - ZonedDateTime 作为 Spring REST RequestMapping 中的 PathVariable

javascript - 如何在重定向到下一页后显示 div?

java.lang.NoClassDefFoundError : org/hibernate/util/DTDEntityResolver

java - 为我的类中使用的通用 pojo 建模

java - 生成带有 minifyEnabled 设置为 true 的签名 APK 后,firebase UI 输出空白

java - Spring Data (JPA) 与 JPA 持久性提供程序有何关系?

java - 如何使 Spring AspectJ 注释在 Java 6/7 中工作

java - 如何将 HttpServletRequest 转换为字符串?

java - Maven Jetty 插件 - Servlet 不工作