我不熟悉基于应用程序服务器的安全约束。对于以下 web.xml 示例,我看到了定义的角色以及哪个角色可以访问受限资源。
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Whatever</realm-name>
</login-config>
<security-role>
<description>Administrator Role</description>
<role-name>admin</role-name>
</security-role>
<security-role>
<description>Privileged User</description>
<role-name>privileged</role-name>
</security-role>
<security-role>
<description>Guest User</description>
<role-name>guest</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>Privileged area</web-resource-name>
<url-pattern>/restricted/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>privileged</role-name>
</auth-constraint>
</security-constraint>
当用户第一次发出 http 请求以访问受限页面时,他们没有角色并要求输入用户名/密码。容器可以根据数据库验证用户名并为用户分配角色(例如管理员)。容器将这个角色存储在哪里,以便对于后续的 http 请求,它知道该请求具有访问资源的适当角色?