Java过滤器无限循环[重复]

2023-11-29

我想实现一个过滤器来进行身份验证,但不知何故它陷入了无限循环......任何想法表示赞赏。

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;

    doBeforeProcessing(request, response);

    Throwable problem = null;
    HttpSession session = httpRequest.getSession(true);
    if(session.getAttribute("userName")!=null&&session.getAttribute("userName")!=(""))
    {
        try {
            chain.doFilter(request, response);
        } catch (Throwable t) {
            // If an exception is thrown somewhere down the filter chain,
            // we still want to execute our after processing, and then
            // rethrow the problem after that.
            problem = t;
            t.printStackTrace();
        }   
    }else{
        httpResponse.sendRedirect("login.jsp");
        return;
    }

调试模式下的这段代码只会无限次运行,基本上我想在用户未登录时将用户重定向到login.jsp。 任何答案表示赞赏。


Here,

httpResponse.sendRedirect("login.jsp");

你正在发送一个new对目标页面的 HTTP 请求,而不是使用当前请求。如果这个新的 HTTP 请求被映射到过于通用的 URL 模式(例如/*。并且将执行相同的检查并再次重定向。等等。这是一个永无休止的故事。

您需要添加额外的检查才能执行FilterChain#doFilter()当当前请求的页面是登录页面时也是如此。

String loginURL = httpRequest.getContextPath() + "/login.jsp";

if (httpRequest.getRequestURI().equals(loginURL)) || session.getAttribute("userName") != null) {
    chain.doFilter(request, response);
} else {
    httpResponse.sendRedirect(loginURL);
}

请注意,我还删除了对空字符串作为用户名的无意义检查(但是您要确保your代码没有将空字符串设置为用户名。只需使用null代表未登录的用户。另请注意,我还修复了重定向 URL,因为当当前请求的 URL 位于子文件夹中时,它会失败。

另一种替代方法是将所有这些受限制的页面放在一个公共子文件夹中,例如/app, /secured, /restricted等,然后将过滤器映射到 URL 模式/app/*, /secured/*, /restricted/*等代替。如果您将登录页面保留在此文件夹之外,则在请求登录页面时将不会调用过滤器。

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

Java过滤器无限循环[重复] 的相关文章

  • Java - 为什么不允许 Enum 作为注释成员?

    It says 原始 String Class an Enum 另一个注释 上述任何一个的数组 只有这些类型才是合法的 Annotation 成员 为什么泛型 Enum 不能成为 Annotation 的成员 例如 Retention Re
  • Hibernate注解放置问题

    我有一个我认为很简单的问题 我见过两种方式的例子 问题是 为什么我不能将注释放在字段上 让我举一个例子 Entity Table name widget public class Widget private Integer id Id G
  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 使用 Vaadin Flow Web 应用程序处理全局所有布局和“路由”URL 的登录

    Vaadin 8 在 Vaadin 8 中 在我的UI子类我通过检查用户的会话是否带有一个属性来处理登录 该属性表明他们是否已成功登录 如果没有的话 我的UI子类显示登录布局 而不是带有导航选项的其他内容 例如菜单栏和在该 UI 内切换布局
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • Eclipse 中 Spring MVC 模型对象的 (jsp /jstl) 视图中的代码辅助

    在 Spring MVC 中 当将对象放置在视图模型中时 如下所示 public String getUser Model model fetch user model addAttribute user user return viewN
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • JAVA ArrayList:如何知道它是否包含字符串数组?

    import java util ArrayList public class Test public static void main String args ArrayList
  • Spring 3.1中可以和@Configuration结合使用吗

    我从 Spring 3 0 5 迁移到 3 1 因为我需要自定义 RequestMappingHandlerMapping 我在扩展 RequestMappingHandlerMapping 插件中遇到问题 我有现有的 servlet co
  • 定义一个新句柄(类似于STDOUT)

    当我注意到这一点时 我正在查看批量重定向句柄 这里是link 它提到句柄 3 9 未定义 可以由程序定义 现在我已经阅读了有关在 C 中执行此操作的信息 但我想知道这在 cmd batch 中是否可能 如果可以 它的限制 用途是什么 如果在
  • Gulp 似乎找不到指南针 mixins

    我正在尝试使用 gulp 作为 Grunt 的替代构建工具 将我的 scss 编译为 css 因为我听说它可以更快 我什至在对 scss 文件进行基本编译时都遇到问题 我尝试过使用gulp sass gulp ruby sass and g
  • Group By 子句中的无效列名错误

    我正在尝试为 rdlc 报告创建 Sp 其中我使用许多用户定义的函数进行计算 但是当我尝试在 group by 子句中使用函数别名时 会出现错误 Msg 207 Level 16 State 1 Line 14 无效的列名 CommPaid
  • 程序没有做它应该做的事 - C

    我编写了一个程序 从用户接收一系列数字 用户必须输入升序的数字 可以是4ex 1 2 2 3 7 8 0 并以 0 结尾 当然 如果没有 则会出现相应的错误消息 并且程序将关闭 我们可以确定用户会保留 Y 数组将是 如果 X 数组一切顺利的
  • 为什么两个字符串对象引用的串联不等于相同内容的字符串对象[重复]

    这个问题在这里已经有答案了 为什么下面s3 and s5 String对象不同 当s5尝试在字符串池中创建它检查内容s3已经有相同的内容了s5 refers s3字符串池中的对象 但我的假设是错误的 那么任何人都可以纠正我 String s
  • 如何修复使用 Api 时未按请求设置 Laravel 会话存储

    早些时候我尝试过这种方法堆栈溢出帖子但它在本地给出了 419 问题 api gt do not resolve Session store not set on request issue register user App Http Mi
  • Monotouch + UIWebView = 随机崩溃

    我在 iOS 5 0 iPhone 和 iPad 上使用 Mono Monotouch MonoDevelop 的最新稳定版本 我有一个 UIWebView 在模拟器中永远不会崩溃 但是在实际设备上它会随机崩溃在 EXC BAD ACCES
  • AWS::S3::Bucket:Class 的未定义方法“find”

    我正在为我的 Rails 项目实现 Amazon S3 上传器 我正在尝试访问一个存储桶 以便我可以将所有图像分配给一个变量并列出它们 当我尝试在上传控制器中查看新操作时 不断收到以下错误 undefined method find for
  • iOS UIView 旋转后获取框架

    我正在尝试获取我的尺寸UIView方向改变后 在我的视图控制器中我实现didRotateFromInterfaceOrientation 并打电话setNeedsLayout 在我看来 在我看来layoutSubviews方法中 它尝试根据
  • 用换行符分割字符串[重复]

    这个问题在这里已经有答案了 我正在尝试分割此文件中的行eng pol txt通过新行符号 n 它根本不起作用 我已经尝试过 String words strLine split n System out println Arrays toS
  • 重命名后应用存储后如何从 git“由我们添加”冲突中恢复

    我不记得我的 git local repo 是如何进入这种状态的 但情况是这样的 我在命令行上的状态显示 无需提交任何内容 工作树干净 git stash show p stash 0 显示了一些变化的差异 当我随意滚动时 并没有真正理解
  • /var/log/daemon.log 占用更多空间如何减少?

    下面是文件 rw r 1 root adm 4 4G Mar 6 09 04 daemon log rw r 1 root adm 6 2G Mar 1 06 26 daemon log 1 rw r 1 root adm 50M Feb
  • 使用scanf读取多行输入

    为班级编写程序 仅限于 scanf 方法 程序接收可以接收任意数量的行作为输入 使用 scanf 接收多行输入时出现问题 include
  • 如何根据空手道中的过滤器从 jsonarray 中删除对象

    我想根据过滤器从 json 数组中删除一个对象 尝试了下面的代码但没有成功 def json id 0a7936ed code test label test type sell id 7bc1909b2 code test2 label
  • NSTimer 精度

    我目前正在开发一个应用程序 该应用程序需要以精确的时间间隔播放声音文件 该时间间隔的持续时间是可变的 我似乎记得有人告诉 NSTimer 只是在指定的持续时间后将操作放入堆栈 而不是在指定的持续时间后运行操作 这意味着如果在它之前堆栈上有很
  • DBD::CSV 和占位符

    usr bin env perl use warnings use strict use DBI my dbh DBI gt connect DBI CSV RaiseError gt 1 or die DBI gt errstr my t
  • 访问被拒绝(“java.lang.RuntimePermission”“modifyThreadGroup”)

    我正在使用 Google App Engine 和 Google Cloud SQL 开发服务器应用程序 在本地计算机上运行服务器时尝试连接到 Cloud SQL 时遇到问题 我收到错误 java security AccessContro
  • Java过滤器无限循环[重复]

    这个问题在这里已经有答案了 我想实现一个过滤器来进行身份验证 但不知何故它陷入了无限循环 任何想法表示赞赏 HttpServletRequest httpRequest HttpServletRequest request HttpServ