使用 JSF 2.0 实现重定向登录的正确方法是什么?

2023-12-07

我的网站的一部分应该只能由授权用户访问。假设用户将进入属于仅授权部分的页面a.html。

如果我要使用 servlet/JSP,我可以编写一个过滤器来检查用户是否登录,如果没有,则将他重定向到登录页面。成功登录后,用户将被重定向到他最初想要访问的页面,在本例中为 a.html。 (页面地址可以存储在请求中)。

在 JSF 2.0 中实现这种场景的正确方法是什么?


只需以同样的方式进行,使用Filter。很高兴知道 JSF 会话范围的托管 bean 是在幕后存储为HttpSession以托管 bean 名称作为键的属性。

假设您有一个像这样的托管 bean:

@ManagedBean
@SessionScoped 
public class UserManager {

    private User user;

    // ...

    public boolean isLoggedIn() {
        return (user != null);
    }

}

然后你就可以签入了Filter#doFilter()如下:

UserManager userManager = (UserManager) ((HttpServletRequest) request).getSession().getAttribute("userManager");

if (userManager != null && userManager.isLoggedIn()) {
    chain.doFilter(request, response);
} else {
    ((HttpServletResponse) response).sendRedirect("login.xhtml");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JSF 2.0 实现重定向登录的正确方法是什么? 的相关文章

  • jsp/servlet 从数组填充下拉框

    大家好 我正在尝试创建一个表单 允许您为某个主题创建一个实验室 它有一个下拉框 您可以在其中选择与该用户相关的主题 但是 当我去加载页面时 我收到此错误g apache jasper JasperException java lang Nu
  • 更新/编辑数据库中输入的数据 - servlet

    我准备了一个用于插入 查看和删除数据的表单 现在我想添加选项来编辑该数据 但要么我遵循错误的方法 要么我不知道如何做到这一点 那么任何人都可以帮助我继续编辑输入的数据吗 我应该参考旧的 html 页面进行编辑还是新页面或 我知道我没有遵循
  • 尝试获取 GCS 中存储的图像的 getServingUrl 时出现 OBJECT_NOT_FOUND

    我写了一个Servlet 我正在其中读取图像blobstore 来自 GCS 的另一张图像 然后在对这两个图像应用合成后 我将合成图像存储回 GCS 中 我的代码到目前为止运行良好 之后 当我尝试获取合成图像的服务 url 时 我得到了一个
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • JSF 定制转换器

    我有一个像这样的自定义转换器 Override public Object getAsObject FacesContext facesContext UIComponent component String str System out
  • 不同 servlet-api 版本冲突

    我正在使用 Maven 和 Jetty 作为服务器来开发 RestEasy Web 服务 其中一项服务应使用扩展 javax servlet http HttpServletResponseWrapper 的 Filter 问题出在来自 s
  • 在 passtrough 属性中使用 f:selectItems var

    我可以将表达式传递给 JSF 2 传递属性吗 以下代码不起作用 表达 country isoCode 不予评价
  • 将对象列表传递给 Freemarker 然后循环

    我已经熟悉了 FreeMarker 一个 Java 模板引擎 我已经能够通过哈希映射将对象传递给模板引擎了 这样就可以了 但是 一旦我尝试将任何类型的多个对象集传递给 FreeMarker 它就会给我一个 freemarker templa
  • Servlet 从 Amazon S3 读取数据非常慢

    我需要一个 Servlet 来从 Amazon S3 服务器返回文件 只有服务器有访问凭据 S3 存储桶不公开 我无法改变这一点 有人告诉我使用数据流 但它们太慢了 为了进行测试 我有一个带有缩略图的小项目 当您单击一个项目时 它会打开一个
  • JSF 2:如何在同一输入中显示不同的ajax状态?

    当每个字段失去焦点时 我想验证表单中的每个字段 当发生这种情况时 我希望发生以下操作 1 在字段的右侧出现一个图像 一个 gif 表示系统正在检查用户输入 2 完成后 会在右侧出现另一个 gif 取决于输入 例如 success gif 或
  • 为 JSP 创建注销链接?

    当用户登录我的应用程序时 他提交一个要通过 Servlet 处理的表单 servlet 为用户创建一个会话 我如何创建一个链接以便用户可以注销 我似乎无法直接链接到 Servlet 如何删除会话并链接回主页 HttpSession sess
  • 请求调度概念的包含和转发机制之间的区别?

    Forward 这可以通过 Request 两种方式完成 ServeletContext 将请求从 servlet 转发到另一个资源 servlet JSP 文件或 HTML 文件 在服务器上 转发完成于 服务器端 在客户端不知情的情况下
  • 如何防止我的 servlet 被其他网站调用

    好的 我有一个像这样的简单的 servlet public class SimpleServlet extends HttpServlet public void doPost HttpServletRequest req HttpServ
  • 将序列化数据发送到 servlet 时出现 java.io.EOFException

    我正在尝试从 Java 本地应用程序上传一个包含文件到服务器的对象 我的计划是 在 tomcat 上运行的 servlet 将使用以下方法获取对象ObjectInputStream in the doGet方法 但我得到一个EOFExcep
  • Java 会话变量

    我听说有些人认为在会话中将信息存储在服务器上是一个坏主意 因为它不安全 因此 在多页面业务流程功能中 应用程序将数据写入数据库 然后在需要时检索信息 在会话中存储私人信息是否一定不安全 只要会话本身安全 在会话中存储属性就不存在安全风险劫持
  • 将带有 HTML 代码的字符串注入并解释到 JSF 页面的组件

    我使用 PrimeFaces 和 JSF 2 0 来构建一个应用程序 我正在使用 PrimeFaces
  • 如何获取 JSF 2 中所有会话范围的 bean?

    据我所知 JSF 将所有会话范围 bean 保存在某种 Map 中 如果我错了 请纠正我 在我的应用程序中 我有一个名为 userDetailsBean 的会话范围 由 Spring 管理并注入到支持 bean 中 bean 是否有可能通过
  • 有没有更快的方法来输出PDF文件?

    这是一段将PDF文件输出到浏览器的代码 可以更快吗 这是在 Java servlet 中实现的 private ByteArrayOutputStream getByteArrayOutputStreamFromFile File file
  • 在 Apache Tomcat 上运行 JSF 项目

    如何在Tomcat上午餐JSP项目 我复制WebContent文件夹到webappApache 的文件夹 但它找不到我的 jsp 页面 但如果我将 jsp 更改为 jsf index jsf 就可以正常工作 我怎么解决这个问题 web xm
  • 如果在 addHeader 之前写入正文,HttpServletResponse 会丢失标头吗?

    环境 Java HotSpot TM 64 位服务器 VM 内部版本 16 3 b01 混合模式 tomcat6 当我使用HttpServlet发送html页面时 如下所示 resp getWriter append body body i

随机推荐