我需要在setVechicleName(String vehicleName) {
this.vehicleName = vehicleName;
}
Spring
类中创建会话对象。在服务类中只有一种方法:
@Service
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
User user=appServiceManager.getUser(username);
方法将不再接受额外的参数 - 除了loadUserByUsername
,因为它是由预定义的类调用。
我想在会话中保留用户详细信息。
如何在我的服务类中获取会话?
答案 0 :(得分:0)
session
对象与表示(View)层相关,因此将会话对象传递给服务层并不是最佳实践,而是需要在控制器本身中处理它。
如果您处理服务层中的session
或view
相关对象,您最终会将服务层(业务逻辑)与表示层紧密耦合,这将是一个问题,因为服务层的整体目标是与不同的端点(如控制器,不同的Web服务等)松散耦合。
因此,您可以在控制器层中将userdetails
添加到Httpsession
中,如下所示:
@Controller
public class UserDetailsController {
public R method1(HttpSession session, UserDetailsBean bean) {
session.addAttribute("USERDETAILS", bean);
//you can use UserDetailsBean object anywhere until you remove from session
}
}
如果您使用spring-security
,则可以轻松获取控制器中的userdetails
,如下所示:
UserDetails userDetails = SecurityContextHolder.getContext().getAuthentication().getDetails();
您可以查找API here