Authentication 基本身份验证不会第二次显示受约束资源的身份验证弹出窗口

Authentication 基本身份验证不会第二次显示受约束资源的身份验证弹出窗口,authentication,servlets,Authentication,Servlets,我正在尝试基本的身份验证机制。当我第二次尝试访问受约束的资源时,用户名和密码的弹出窗口不会出现 以下是在my tomcat-users.xml中定义的角色和用户 <role rolename="Admin"/> <role rolename="Member"/> <role rolename="Guest"/> <user username="Annie" password="admin" roles="Admin, Member, Gues

我正在尝试基本的身份验证机制。当我第二次尝试访问受约束的资源时,用户名和密码的弹出窗口不会出现

以下是在my tomcat-users.xml中定义的角色和用户

<role rolename="Admin"/>  
<role rolename="Member"/>
<role rolename="Guest"/>    
<user username="Annie" password="admin" roles="Admin, Member, Guest"/>    
<user username="Diane" password="coder" roles="Member, Guest"/>    
<user username="Ted" password="newbie" roles="Guest"/>    

以下是my web.xml中定义的条目

<web-app>

<display-name>SecurityApp</display-name>    

<servlet>
<servlet-name>BeerAppServlet</servlet-name>    
<servlet-class>com.example.servlets.BeerAppServlet</servlet-class>    
</servlet>    
<servlet-mapping>    
<servlet-name>BeerAppServlet</servlet-name>   
<url-pattern>/Beer/AddRecipe</url-pattern>   
</servlet-mapping>    

<security-role> <role-name>Admin</role-name> </security-role>    
<security-role> <role-name>Member</role-name> </security-role>    
<security-role> <role-name>Guest</role-name> </security-role>   

<security-constraint>
 <web-resource-collection>
  <web-resource-name>Update</web-resource-name>
  <url-pattern>/Beer/AddRecipe/*</url-pattern>
 </web-resource-collection>

<auth-constraint>
 <role-name>Admin</role-name>
 <role-name>Member</role-name>
</auth-constraint>

</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
</login-config>

</web-app>

安全应用程序
BeerAppServlet
com.example.servlets.BeerAppServlet
BeerAppServlet
/啤酒/饮料配方
管理
成员
客人
更新
/啤酒/饮料配方/*
管理
成员
基本的
我的webapp名称是SecurityApp。 这是我第一次访问我的应用程序,如下所示
http://localhost:8083/SecurityApp/Beer/AppRecipe
我得到了输入用户名和密码的弹出窗口,并输入了以下凭证username=Diane password=coder。输入上述凭据后,验证成功

这是我第二次键入此url
http://localhost:8083/SecurityApp/Beer/AppRecipe
。 我没有得到用户名和密码的验证弹出窗口。为什么会这样。任何人都可以使用存储在客户端(您的浏览器)的凭据解释一下吗

web浏览器负责创建用户名和密码的
BASE64
-编码,并在每次请求到同一页面时自动发送该编码。这意味着您将立即“登录”,而无需重新输入凭据


您只需关闭并打开浏览器,即可再次显示用户名/密码对话框。

因为浏览器会缓存页面和身份验证领域的凭据(用户名、密码),并在您下次访问页面时自动发送这些凭据。这就是基本身份验证的工作原理。如果关闭浏览器(所有实例),它将再次请求凭据,除非将其配置为永久存储凭据。您可以查看相关问题。

您的回答澄清了我的疑问。基本身份验证中的一个小问题是,有没有一种方法可以使凭据不存储在客户端,并且对于受约束资源的每个请求,都会打开“用户名/密码”对话框?简言之,没有。基本身份验证没有注销功能。您可以使用基于web表单/cookie的身份验证。