Session JSF2和x2B;CDI@生成保持旧会话状态的命令
我有一个AuthenticatorBean声明如下:Session JSF2和x2B;CDI@生成保持旧会话状态的命令,session,jsf-2,cdi,logout,Session,Jsf 2,Cdi,Logout,我有一个AuthenticatorBean声明如下: @Named @SessionScoped public class AutenticadorBean implements Serializable { @Inject private AutenticadorService autenticadorService; 这个bean在服务内部调用一个方法来验证用户 凭据和@在会话中生成此用户,如下所示: @SessionScoped public class Autenti
@Named
@SessionScoped
public class AutenticadorBean implements Serializable {
@Inject
private AutenticadorService autenticadorService;
这个bean在服务内部调用一个方法来验证用户
凭据和@在会话中生成此用户,如下所示:
@SessionScoped
public class AutenticadorServiceImpl implements AutenticadorService, Serializable {
@EJB
private AnalistaRepository analistaRepository;
private Analista analistaSessao;
@Override
public void inserirSessaoDadosLogin(String login) {
analistaSessao = analistaRepository.buscaPorUserName(login);
}
@Produces
@Named("analistaSessao")
public Analista getAnalistaSessao() {
return analistaSessao;
}
}
第一次登录应用程序时,它会生成会话中的用户,但是
问题是,在我注销后,用另一个用户再次登录,然后
设法
在其他服务中加载该属性
我注销前的第一个用户。但是如果我直接在AutenticadorService.getanalistassao()中访问analistassao;它返回第二个正确的用户
我登录了
这是我的注销代码:
public String logout() throws IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext ex = facesContext.getExternalContext();
ex.invalidateSession();
return "/home?faces-redirect=true&logout=true";
}
有人知道这种行为的原因吗
谢谢。我认为您所做的应该有效,因为您使会话无效 尝试从您的AutenticadorServiceImpl中删除GetAnalystasSao()上的@products和@Named,并将此@Model类添加到代码中
@Model
public class AnalistaProducer {
@Inject
private AutenticadorService autenticadorService;
@Produces
@Named
public Analista getAnalistaSessao() {
return autenticadorService.getAnalistaSessao();
}
}
以前从没见过这个。我从不使用EJB,你能试试pojo吗?在发布之前翻译源代码是一个很好的做法。对这里的大多数人来说,“analistasedadoa”看起来像是胡言乱语。不客气。。请注意,模型注释是一个原型,它使用RequestScope并同时命名
@Model
public class AnalistaProducer {
@Inject
private AutenticadorService autenticadorService;
@Produces
@Named
public Analista getAnalistaSessao() {
return autenticadorService.getAnalistaSessao();
}
}