gpt4 book ai didi

java - SONAR 要求使 "UserProfile"可序列化或不将其存储在 session 中

转载 作者:行者123 更新时间:2023-12-02 03:21:20 25 4
gpt4 key购买 nike

我的程序中有以下代码,在与 Maven 集成后,我正在运行 SonarQube 5 对其进行代码质量检查。

但是,Sonar 要求使“UserProfile”可序列化或不将其存储在 session 中。

为什么?

private void setUserProfileinSession(HttpServletRequest request,
Authentication authentication) {

List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(
authentication.getAuthorities());
GrantedAuthority authority = authorities.get(0);
UserProfile userProfile = new UserProfile();
userProfile.setUserName(authentication.getName());
userProfile.setUserRole(authority.getAuthority());
HttpSession session = request.getSession();
session.setAttribute(EnumGlobal.USERPROFILE.getName(), userProfile);
if (logger.isDebugEnabled()) {
logger.info("JK SSO Role Set in Session by AuthenticationSuccessHandler:"
+ userProfile.getUserRole());
}

Facing problem in line 10 -- (EnumGlobal.USERPROFILE.getName(), userProfile)

public class UserProfile extends BaseBO {

String userName;
String userRole;

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getUserRole() {
return userRole;
}

public void setUserRole(String userRole) {
this.userRole = userRole;
}

最佳答案

Web 容器可能需要序列化 session 内容。一个示例是当您运行容器的多个实例时将 session 转移到另一台物理机。

因此,放入 session 中的所有对象都应该是可序列化的(即实现接口(interface) java.io.Serialized)。

错误消息已经给出了如何删除错误的提示:要么使对象可序列化,要么不将其存储在 session 中。

关于java - SONAR 要求使 "UserProfile"可序列化或不将其存储在 session 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39567650/

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