相关疑难解决方法(0)

带有 CDI 的 JSF 2.3 中的会话固定和会话作用域 Bean

在用户登录时更新 HTTP 会话是一种常见的最佳实践。这将强制使用新的会话 ID,避免会话固定漏洞。

当涉及@SessionScoped bean 时,是否有使用 CDI 实现此功能的首选模式?困难在于,通过使当前的 HTTP 会话无效,您将在下一个请求中获得一个不同的会话范围的 bean,但直到下一个请求才会如此。

例如,假设一个会话 bean 用于存储用户登录信息:

@Named("sessionbean")
@SessionScoped
public class SessionBean implements Serializable {
    private int userId;
    private String username;
    private List<String> privileges;

    // Accessors omitted 
}
Run Code Online (Sandbox Code Playgroud)

另一个用于管理登录的 bean:

@Named("loginbean")
@ViewScoped
public class LoginBean implements Serializable {

    private String username;
    private String password;
    @Inject private SessionBean session;
    @Inject private SessionManager sessionManager;
    @Inject private PrivilegeManager privilegeManager;      

    public String doLogin() {
        String destinationUrl;

        if (validate(username, password)) {
            FacesContext context = FacesContext.getCurrentInstance();

            // force …
Run Code Online (Sandbox Code Playgroud)

session jsf cdi jsf-2.3

6
推荐指数
1
解决办法
702
查看次数

javax.faces.FacesException 无法找到 CDI BeanManager

我在用:

  • 目标运行时间:
  • 野蝇14.0
  • 动态网页模块版本
  • 4.0
  • 配置
  • 动态网络模块4.0
  • 爪哇1.8
  • JavaServer Faces 2.3
  • JSF 能力
  • JSF 配置文件:/WEB-INF/faces-config.xml
  • JSF Servlet 名称:Faces Servlet JSF
  • Servlet 类名称:javax.faces.webapp.FacesServlet
  • URL 映射模式:*.jsf

我有这个错误:

21:26:14,941 严重 [javax.enterprise.resource.webcontainer.jsf.config](ServerService 线程池 -- 76)部署期间出现严重错误::com.sun.faces.config.ConfigurationException:工厂'javax.faces.lifecycle .ClientWindowFactory' 未正确配置。在 com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:357) 在 com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:243) 在 com.sun.faces.config .ConfigManager.initialize(ConfigManager.java:443) 位于 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:237) 位于 io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187) 处io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:216) 在 io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:185) 在 io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1 .call(ServletRequestContextThreadSetupAction.java:42) 在 io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) 在 org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java :105) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService) .java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0 (UndertowDeploymentInfoService.java:1502) 在 io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:250) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:96) 在 org. wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:78) 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源) 在 java.util.concurrent.FutureTask.run(未知来源) org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) 在 org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985) 在 …

jsf wildfly

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

jsf ×2

cdi ×1

jsf-2.3 ×1

session ×1

wildfly ×1