jsf登录超时

2023-12-14

好的,简单的问题。我有一个 JSF 应用程序,包含一个登录页面。问题是,如果用户加载登录页面,离开一段时间,然后尝试登录,会话就会过期并引发 ViewExpiredException。当发生这种情况时,我可以重定向回登录,但这不是很顺利。如何允许此流程在无需额外尝试的情况下正确登录?


Update

从 Mojarra 2.1.19 / 2.2.0 开始,您现在可以设置<f:view>为真:

<f:view transient="true">
     Your regular content
</f:view>

您可以阅读有关Balusc's博客在这里:

http://balusc.blogspot.com.br/2013/02/stateless-jsf.html

Original

如果您使用 Facelets,您可以创建自己的 ViewHandler 来处理此问题:

public class LoginViewHandler extends FaceletViewHandler
{
    public LoginViewHandler( ViewHandler viewHandler )
    {
        super( viewHandler );
    }

    @Override
    public UIViewRoot restoreView( FacesContext ctx, String viewId )
    {
        UIViewRoot viewRoot = super.restoreView( ctx, viewId );

        if ( viewRoot == null && viewId.equals( "/login.xhtml" ) )
        {
            // Work around Facelet issue
            initialize( ctx );

            viewRoot = super.createView( ctx, viewId );
            ctx.setViewRoot( viewRoot );

            try
            {
                buildView( ctx, viewRoot );
            }
            catch ( IOException e )
            {
                log.log( Level.SEVERE, "Error building view", e ); 
            }
        }

        return viewRoot;
    }
}

将“/login.xhtml”更改为您的登录页面。这会检查是否可以恢复您的视图,如果不能并且当前视图是您的登录页面,它将为您创建并构建视图。

在 Face-config.xml 中进行如下设置:

<application>
    <!-- snip -->
    <view-handler>my.package.LoginViewHandler</view-handler>
</application>

如果您使用没有 Facelets(即 JSP)的 JSF,您可以尝试让该类扩展 ViewHandlerWrapper - 请注意,buildView() 将不可用。希望 createView() 本身能够正确设置视图,但我对 JSF/JSP 不是 100% 确定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jsf登录超时 的相关文章

  • SFTP Java - 管道关闭 Jsch 异常

    我正在研究一种 java 方法 将文件从一个位置复制到另一个远程位置 我的代码如下 我尝试使用jsch 0 1 42 0 1 50 0 1 54 public static void processFiles ArrayList
  • Rails:RSpec - nil:NilClass 的未定义方法“cookie_jar”

    铁轨新手 尝试遵循迈克尔 哈特尔的教程 尝试添加辅助方法来模拟 RSpec 测试中的日志时陷入困境 describe when the a user has logged in and attempts to visit the page
  • JSF 2.0 request.getParameter 返回编码错误的字符串

    我正在用 JSF 2 0 编写一个应用程序 它支持多种语言 其中包括带有特殊字符的语言 我使用 String value request getParameter name 和 POST 方法 页面编码设置为 UTF 8 应用程序部署在 a
  • “git push heroku master”仍然要求身份验证

    我已经执行了 heroku login 但是当我尝试推送时 仍然要求我进行身份验证 git push heroku master Username for https git heroku com
  • 在 Django Admin 中隐藏 Auth 部分 [重复]

    这个问题在这里已经有答案了 在 Django 管理中 有什么方法可以隐藏 Auth 部分吗 假设这是 Django 和准系统项目的全新安装 没有应用程序 只有管理员 您可以使用admin site unregister from djang
  • 用户注册错误:没有这样的表:auth_user

    我正在尝试使用 Django 的默认身份验证来处理注册和登录 setting py INSTALLED APPS django contrib admin django contrib auth django contrib content
  • 如何防止点击 时页面刷新

    我试图在用户单击时阻止页面刷新
  • HttpURLConnection 在 Android 2.x 中工作正常,但在 4.1 中不行:未发现身份验证挑战

    我有一些典型的代码 它们使用 HttpURLConnection 来获取带有 URL 的文件 它们在 android 1 x 和 2 x 中运行良好 但在Android 4 1中失败了 我在网上搜索了一下 但几乎没有找到类似的信息 有人愿意
  • 将默认消息“验证错误:需要值”更改为“需要值”

    我可以修改这个默认值吗required true 验证消息仅显示 需要值 formId inputId 验证错误 值是必需的 Either使用输入组件的requiredMessage属性
  • Rails 身份验证插件推荐

    我想向我的 Rails 应用程序添加身份验证 我遇到了几个这样做的插件 acts as authenticated restful authentication Authlogic 等 我还没有看到一篇文章描述使用每种方法的差异 优点和缺点
  • Primefaces 进度条动态标签

    您好 我正在使用 JSF 和 Primefaces 我有一个很长的任务 在此期间我想向用户显示一个进度条 以进度 int 和状态 String 作为指示器 这两个参数映射到后端 bean 的两个字段 如果我使用
  • 将方法参数/参数传递给复合组件操作属性

    标题确实说明了一切 我尝试过 但失败并出现以下错误 Illegal attempt to pass arguments to a composite component lookup expression i e cc attrs iden
  • 如何向 JSF 应用程序发送手动 jQuery Ajax 请求?

    我正在做一个POST 使用 jQuery 的请求似乎成功了 但是我如何在服务器端使用它并修改响应 我是否需要另一个 servlet 因为 Faces Servlet 不是为处理这个问题而设计的 ajax type POST data sta
  • SharePoint Online 身份验证失败

    我有一个 C 应用程序 它通过使用 Web 请求对 SharePoint Online 进行身份验证 它对我来说非常有用 但其他人收到以下错误
  • 如何将值传递到 selectOneMenu 中的监听器

    我有 2 个下拉菜单 类型和代码 如果值 A 或 B 或 C 我希望代码下拉列表根据类型下拉列表更改值 如何将 A 或 B 或 C 的值传递给侦听器 以便它可以理解和处理我的 List
  • laravel 4 登录验证失败

    在 Laravel4 中 我在路由中编写了以下代码 但它总是将我重定向到登录页面 我用谷歌搜索并在堆栈溢出上找到了它 并尝试了所有解决方案但没有成功 我确信这将是一个愚蠢的错误 但请跟踪它 谢谢 Routes Route post logi
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • PrimeFaces 对话框参考父级

    我有一个 xhtml 页面 显示带有条目的数据表 我还有一个用于插入新条目的按钮 该按钮显示一个包含表单的对话框 插入表格用作
  • CakePHP 身份验证插件身份关联

    我正在使用 CakePHP 3 8 并迁移到身份验证插件 https book cakephp org authentication 1 1 en index html https book cakephp org authenticati
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template

随机推荐

  • PerformSelector 不工作

    MyThreadRun 方法是这样从 MyMethod 调用的 NSArray args NSArray arrayWithObjects arg1 target NSStringFromSelector mySelector nil NS
  • 单元测试 Zsh 完成脚本

    我正在尝试为 Zsh 编写一个完成脚本 我想对完成脚本进行单元测试 例如 我想测试完成情况my command h包括 help 对于鱼 我可以使用complete C my command h 然后会输出 help以及任何其他有效的完成情
  • 如何在两台具有公共IP但都位于LAN后面的机器之间进行通信(python解决方案)?

    正在寻找一个简单的 python 解决方案 假设机器A的本地IP是192 168 1 5 公共IP是111 11 111 11 机器B的本地IP是10 0 0 5 公共IP是222 22 222 22 现在我需要在这两台机器之间进行通信 你
  • 如何在 C 中更新 GTK+-3.0 中的标签

    我似乎无法使用该功能 gtk label set text 这就是我写的 include
  • 执行多重响应;如何从响应中读取和存储指南

    我正在使用 ExecuteMultipleResponse 方法使用 SSIS 一次插入 10 条帐户记录 List
  • 什么是算法摊销分析? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 它与渐近分析有何不同 你什么时候使用它 为什么 我读过一些似乎写得很好的文章 例如 http www ugrad cs ubc ca cs320 2010W2 handouts
  • 无法进行空手道测试

    我无法在我的功能中运行空手道测试 package api import com intuit karate junit4 Karate import org junit runner RunWith RunWith Karate class
  • Linux下如何删除包含其他子目录和文件的目录?

    我有一个包含文件和其他目录的目录 我需要在一个命令中删除所有内容 但如果我确定要删除 i 则无需询问我每个文件 有什么命令吗 您需要递归删除该文件夹 rm r folder name From rm help r R recursive r
  • 如何从Python中的列表构造矩阵?

    我是 Python 新手 我的问题是如何从一些列表构造矩阵 例如 如果我有列表 388 625 174 125 157 25 166 375 432 25 606 125 326 25 202 75 383 5 718 25 630 284
  • 如何将 pandas 方法作为参数传递?

    我有一个计算 pandas 数据框的列模式的函数 def my func df for col in df columns stat df col mode print stat 但我想让它更通用 以便我可以更改我计算的统计数据 例如mea
  • ggplot2 中的默认中断 - 图例指南和极坐标 y 轴标签的中断限制在哪里

    这本质上是一个后续问题ggplot 如何计算其默认中断 当我试图找到一个稍微更优雅的解决方案时 我遇到了这个如何在coord 极坐标图ggplot中添加y轴标签 显然 休息时间总是用以下方式计算scales extended breaks
  • C# 从 Azure 检索 blob 列表

    我需要一些存档清理代码来在一定的保留期过后删除旧的 Azure 日志 我知道我可以这样做 CloudStorageAccount storageAccount CloudStorageAccount Parse CloudBlobClien
  • 修改x轴位置

    当你使用plot在 Matlab 中调用函数时 y 轴和 x 轴分别位于左侧和底部 但我希望 x 轴在图的中间穿过 比例和数字如下所示 请原谅我的业余绘画技巧 但基本上我希望 x 轴移动到顶部 例如 我希望那里有数字和那些小凸起 如红线所示
  • 如何使用计时器替换Azure辅助角色中的Thread.Sleep(...)?

    有很多人说要使用的例子Timer代替Thread Sleep in an Azure Worker Role 没有问题 我很难理解的是如何编写这个代码 目前 我有以下 伪代码 timer Elapsed sender args gt DoW
  • 记住状态 chrome 扩展

    我使用 chrome 扩展来触发两个内容脚本来注入 css 如果用户打开页面 则 contentscript on js 加载 在我的 manifest json 中定义 清单 json name tools version 1 1 des
  • AngularJS 路由器配置不起作用

    我刚刚开始学习 Angular JS 我编写了一些路由测试代码 但似乎不起作用 演示应用程序 js var demoApp angular module demoApp demoApp config function routeProvid
  • 在 Ionic 中打开适用于 Android 的应用程序

    我目前正在使用 Ionic Framework 开发适用于 iOS 和 Android 的移动应用程序 我有自己的 Map API 但缺乏导航功能 当用户单击 POI 时 我的应用程序可以打开其他地图应用程序 例如 Google 地图或 W
  • Chart.js yAxes 刻度步长不起作用(小提琴)

    我创建了一个折线图 其中 y 轴选项如下 yAxes ticks precision 1 stepSize 18 1 min 148 5 max 220 9 因此 我希望 y 轴比例如下 220 9 202 8 184 7 166 6 14
  • 使用 Android proguard 忽略外部库

    我想使用 Proguard 主要是出于混淆的原因 我在 Android 中遇到了 proguard 的问题 我使用simpleframework来解析XML 它的外部 在 proguard cfg 中 keepattributes Anno
  • jsf登录超时

    好的 简单的问题 我有一个 JSF 应用程序 包含一个登录页面 问题是 如果用户加载登录页面 离开一段时间 然后尝试登录 会话就会过期并引发 ViewExpiredException 当发生这种情况时 我可以重定向回登录 但这不是很顺利 如