我正在尝试BASIC身份验证机制。当我第二次尝试访问受限资源时,没有出现用户名和密码的弹出窗口。
以下是我的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"/>
以下是我的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>
我的webapp名称是SecurityApp。
这是我第一次访问我的应用程序,如下所示
http://localhost:8083/SecurityApp/Beer/AppRecipe
我获得了输入用户名和密码的弹出窗口,我输入以下凭据username = Diane password = coder。输入上述凭证后,身份验证成功。
第二次输入此网址http://localhost:8083/SecurityApp/Beer/AppRecipe
时。
我没有获得用户名和密码的身份验证弹出窗口。为什么会如此。任何人都可以解释
答案 0 :(得分:1)
使用basic access authentication凭据存储在客户端(您的浏览器)。
每次您向同一页面请求时,网络浏览器都会负责创建BASE64
- 用户名和密码的编码以及自动发送。这意味着您无需重新输入凭据即可立即“登录”。
您可以关闭并打开浏览器,再次显示用户名/密码对话框。
答案 1 :(得分:1)
因为浏览器会缓存页面和身份验证领域的凭据(用户名,密码),并在您下次访问该页面时自动发送它们。这是BASIC身份验证的工作原理。如果关闭(浏览器的所有实例),它将再次请求凭据,除非将其配置为永久存储它们。您可以查看this相关问题。