Servlet 3.0 注销不起作用

2024-01-11

我对 Servlet 3.0 的身份验证功能有疑问:

在 Servlet v3 中使用此代码:

log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
log.info("===^===");
request.logout() ;
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
request.authenticate(response) ;
log.info("===v===");
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());

I would always期望看到用户名/登录窗口,因为logout()功能。相反,它似乎是一种“缓存”机制,可以重新填充凭据并取消我的注销......

Admin

BASIC

===^===

null

null

===v===

Admin

BASIC

是我的 Firefox 有问题,还是 Servlet 代码中缺少某些内容?


我总是希望看到用户名/登录窗口,因为logout() http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html#logout%28%29功能。相反,它似乎是一种“缓存”机制,可以重新填充凭据并取消我的注销......

这就是 HTTP BASIC AUTH 的设计方式,它允许将所有身份验证状态保留在客户端中。换句话说,其不可能的要使用基本/摘要式身份验证注销,服务器无法阻止客户端在向服务器发出后续请求时缓存和重新发送基本身份验证验证器。

我的建议是使用基于表单的身份验证和login http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html#login%28java.lang.String,%20java.lang.String%29的方法HTTPServletRequest http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html.

参考

  • Glassfish v3 (Java EE 6) 中的新安全功能 - 第二部分 http://blogs.oracle.com/nithya/entry/new_security_features_in_glassfish1
  • Glassfish v3 (Java EE 6) 中的新安全功能 - 第三部分 http://blogs.oracle.com/nithya/entry/new_security_features_in_glassfish2
  • 以编程方式进行身份验证的最简单且最便携的方法 http://forums.java.net/jive/message.jspa?messageID=386382
  • 如何从 Glassfish 服务器注销用户 - 需要 SUN 的帮助 http://forums.java.net/jive/message.jspa?messageID=392823
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servlet 3.0 注销不起作用 的相关文章

  • 有没有一种独立的JAVA可以在PC上运行而无需任何操作系统

    据我所知 java 程序可以在任何操作系统上运行 任何类型的机器都有 JVM 我需要一个在我的 PC 上独立运行的 JVM 而不是在我的操作系统 Windows 或任何其他操作系统 上运行 我的意思是 JVM 的作用类似于启动 而不是操作系
  • Gradle 同步失败:配置项目“:lib”时出现问题

    我正在尝试在 android studio 中构建一个项目 但它总是失败 并出现名为 org gradle api ProjectConfigurationException A problem occurred configuring p
  • 删除 PriorityQueue 的顶部?

    假设我使用 Java util 中的 PriorityQueue 类 我想从 PriorityQueue pq 中删除最大的数字 我们假设它位于队列的头部 下面的工作会起作用吗 1 int head pq peek pq dequeue h
  • Spring MVC 应用程序可以是多线程的,即使它的 servlet 不是吗?

    当您谈论 Spring 应用程序是多线程时 您是否一定是指该应用程序中定义的 servlet 是否是多线程的 或者即使应用程序中的 servlet 不是多线程 Spring 应用程序也可以配置为多线程吗 不再支持单线程 servlet 它们
  • jUnit 中每个 @Test 的不同拆卸

    有没有办法为 jUnit 中的每个 Test 定义不同的拆卸 Use the After注释来指示每个之后要运行的方法 Test 像这样的全套注释是 BeforeClass 首先 Tests are run Before 在每个之前 Tes
  • 使用 IntentService 使用 Camera2 拍照

    我正在尝试创建一个可以拍照但不显示预览的应用程序 使用本教程 https www youtube com watch v oPu42I0HSi4 https www youtube com watch v oPu42I0HSi4如果我使用和
  • 从 HashMap 条目列表中删除重复项

    我有一个List
  • CXF 客户端异常:{XXX} 的拦截器已引发异常,现在展开

    我遇到以下 CXF 异常 warning Interceptor for http example com wsdl esc 2011 12 12 AmazonEC2 http example com wsdl esc 2011 12 12
  • Android Studio 中没有参考文档

    昨天刚刚出现了一个新问题 当我将鼠标悬停在方法上或按 Ctrl Q 时 我通常会获取该特定方法的文档信息 但现在我只是得到 按 Ctrl QSharedPreferences getLong Following external urls
  • 如何暂停程序直到按下按钮?

    我使用从 jframe 扩展的类 它有一个按钮 我在程序中使用它 我希望当在我的程序中运行 jframe 时我的整个程序暂停 直到我按下按钮 我该怎么做 in c getch 做这个 我想要一个这样的功能 通过睡眠暂停执行 http dow
  • 查找前 N 个五边形数

    我必须找到第一个N pentagonal numbers 1 从 1 100 并每行显示 10 个 我必须使用getPentagonalNumber int n 方法也是如此 显然这就是它存在的原因 到目前为止 这是我的代码 package
  • IntelliJ 对于 Java 项目使用的默认构建过程是什么?

    直接从 IntelliJ 中的 IDE 构建 Java 项目非常好 它速度很快 而且很有效 我无法找到任何有关 IntelliJ 如何进行这些默认构建的文档 我猜它使用Ant 我想做的是为下载我的项目的任何人自动化这个快速 轻松的构建过程
  • Android Studio安装JDK错误

    In Android Studio I am facing bellow error 当我按下时会显示此弹出窗口Alt Enter对于缺少的类 符号 当我点击 setup SDK 时 它显示两个选项 1 8 Java版本 1 8 0 60
  • 如何列出所有已加载的 Spring bean 定义文件

    在大型企业系统中 并不总是清楚在 ApplicationContext 构建期间导入了哪些文件 有没有办法列出过程中加载的所有文件 我知道如何列出加载的属性文件 但不知道导入的 bean 文件 更新示例 文件 1 applicationCo
  • 访问 JAR 资源

    我有一个jar包含我想要分发的资源 主要是缓存 日志记录等配置 的文件 我对这些资源的相对路径有问题 所以我做了我在另一个 stackoverflow 问题中发现的问题 该问题说这是一种有效的方法 ClassInTheSamePackage
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • 当列表中不存在 X 时,从列表中查找大于 X 的值

    我试图从列表中查找大于特定值 在我的情况下已知 的值 Example Given list 1 2 5 10 15 list is sorted 查找大于的值X 7在这种情况下 期望的结果 返回一个包含值的列表 10 15 我尝试使用jav
  • 为什么我得到:没有有效的 JFX 运行时

    我有一个使用 java 1 6 编译并使用 jnlp webstart 运行的现有应用程序 如果我使用 JRE 1 6 从客户端运行此应用程序 一切都会很好 但是 当我使用 java JDK 7 编译代码并使用 JRE 1 7 67 运行客
  • 是否可以从外部闪存驱动器运行 java (jdk-windows)、Eclipse (indigo) 和 Android-sdk 进行 Android 应用程序开发

    我想知道我们是否可以通过在外部闪存驱动器上保存所需的软件来在我们使用的任何计算机上开发我们的android应用程序 我的意思是在闪存驱动器上安装java eclipse和android sdk 所以最后我们可以将闪存带到任何地方计算机并在任
  • 尝试 Catch 性能 Java

    当捕获异常而不是进行检查时 try catch 需要多长时间 以纳秒为单位 假设消息具有用于查找的 HashMap 类型性能 try timestamp message getLongField MessageField TIMESTAMP

随机推荐

  • 使用 VS 11、.NET 4.5 和实体框架时生成错误

    在 Visual Studio 2010 中 我的解决方案使用 NET 4 2 实体框架 2011 年 6 月 CTP 因此我可以在实体框架中使用空间类型 当我升级到 Visual Studio 11 Beta 时 由于 4 2 和 4 5
  • 异常未传播到 Apache Camel 中的错误处理程序

    我有一条定义 doTry doCatch 块的路线 当在 doCatch 块中处理异常时 我希望将其传播到错误处理程序 以确保消息在本地处理后添加到死信队列中 问题是我无法让错误处理程序的传播正常工作 defaultErrorHandler
  • 将@interface放入.m文件中的逻辑是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 h 和 m 文件中 interface 定义的区别 https stackoverflow com questions 3967187 difference between interface def
  • Android 5.0:如何更改最近使用的应用程序标题颜色?

    我正在使用 AppCompat 并且我的主题正在扩展Theme AppCompat Light DarkActionBar 当我在 Android 5 Lollipop 中按下最近使用的应用程序按钮时 我的应用程序会出现dark标题而不是
  • “DoCmd.OutputTo acOutputQuery”正在删除查询

    我遇到了一个问题DoCmd OutputTo acOutputQuery第二次运行时删除查询本身 这个错误有任何解决方法 补丁吗 至少对我来说似乎是一个错误 回复 你的评论 您是否进行了文件复制 或者是否在两个数据库之间复制了对象 如果是第
  • 64位linux内核如何从ELF启动32位进程

    通过查看binfmt elf c https elixir bootlin com linux v3 5 source fs binfmt elf c在内核源代码中 我无法弄清楚内核 64 位 在生成 32 位进程与 64 位进程时有何不同
  • 性能:boost.compute vs. opencl C++ 包装器

    以下代码分别使用 boost compute 和 opencl C 包装器将两个向量相加 结果显示 boost compute 几乎比 opencl c 包装器慢 20 倍 我想知道我是否错过了使用 boost compute 或者它确实很
  • 如果 automountServiceAccountToken 设置为 false,Pod 服务帐户的用途是什么?

    服务帐户的 API 凭证通常挂载在 pod 中 如下所示 var run secrets kubernetes io serviceaccount token 此令牌允许 Pod 中的容器化进程与 API 服务器进行通信 Pod 服务帐户的
  • 尝试在 Google App Engine 上部署 node.js 时出错

    我在尝试部署时遇到错误Node js应用程序到 Google App Engine Node js运行时因 require 语句而崩溃 我有什么错吗 目录结构 app 协议 js应用程序 js 在文件 app js 中 var protoc
  • 如何以编程方式获取 iPhone 的 MAC 地址

    如何以编程方式获取 iPhone 的 MAC 地址和 IP 地址 NOTE从 iOS7 开始 您无法再检索设备 MAC 地址 将返回一个固定值而不是实际的 MAC 我不久前偶然发现的一件事 最初是从here http www iphoned
  • 我该如何解决此推送错误 - 从身份验证端点返回的 JSON 无效,但状态代码为 200?

    在这里问同样的问题后我仍然遇到这个问题 从 auth 端点返回的 JSON 无效 但状态代码为 200 https stackoverflow com questions 67082279 json returned from auth e
  • 如何仅从一列中选择不同的值

    我有记录如下 key name 1111 aa 1111 bb 2222 cc 我需要选择key and name当 的时候key价值是独特的 当我尝试时 select distinct key name from table 我得到了所有
  • 在c++中将hdf5文件读取到动态数组

    由于堆栈的大小限制 我正在尝试将大型 3D hdf5 文件读入动态数组 我尝试了几种不同的方法 但由于分段错误而失败 下面是显示我的问题的示例代码 我非常感谢一些帮助 This example was based on several ex
  • RestTemplateBuilder bean

    我的应用程序与不同的休息端点交互 每个端点都需要一个专门的 RestTemplate 对象 我正在使用 RestTemplateBuilder 创建每个 RestTemplate 对象 克隆 Spring Boot 提供的 RestTemp
  • AngularJS module.constant() :如何仅在模块内定义常量?

    在一个页面上 我有几个 Angular 模块 对于每个模块 我定义一个包含模块版本的常量 var module1 angular module module1 constant version 1 2 3 var module2 angul
  • 如何在 C++ 中维护指向父级的弱指针?

    是否有一种标准方法可以在 C 的子对象中维护指向父对象 使用共享指针创建 的弱指针 本质上 我需要实现以下内容 Class B Class A private B m b Class B public void SetParentPtr c
  • 正常关闭 IHostedService

    我正在尝试在 NET Core 中开发一个简单的 API 允许异步处理请求 请求发送至控制器 后台服务 IHostedService 上安排的工作 控制器返回 202 后台服务执行长时间运行的操作 由于应用程序将在 IIS 上运行 因此控制
  • 成员函数模板放在哪里

    C 中经常让我感到沮丧的一个方面是决定模板在头文件 传统上描述接口 和实现 cpp 文件之间的位置 模板通常需要进入标头 公开实现 有时还需要引入以前只需要包含在 cpp 文件中的额外标头 我最近再次遇到这个问题 下面显示了一个简化的示例
  • 如何在android中现有的html内容附加附加文本?

    我正在开发一个应用程序 在其中我将文本附加到存储在 html 文件中的现有文本 html 文件的位置位于我的应用程序的 assets 文件夹中 我知道如何使用 URL 加载 html 但我的问题是附加文本 以下是我的java代码 publi
  • Servlet 3.0 注销不起作用

    我对 Servlet 3 0 的身份验证功能有疑问 在 Servlet v3 中使用此代码 log info request getUserPrincipal log info request getAuthType log info re