Jakarta ee 不允许某些角色访问web.xml中的某些url

Jakarta ee 不允许某些角色访问web.xml中的某些url,jakarta-ee,authentication,web.xml,Jakarta Ee,Authentication,Web.xml,假设我有3个角色:管理员和来宾 我有40页 --views ------page1.xhtml1 ------page1.xhtml2 ------page1.xhtml3 ------page1.xhtml4 ------ ...... 管理员可以访问所有页面 来宾只能访问第1、2和3页 如何将角色来宾排除在访问第1、2和3页之外 <security-constraint> <display-name>excluded</display-name>

假设我有3个角色:管理员和来宾
我有40页

--views
------page1.xhtml1
------page1.xhtml2
------page1.xhtml3
------page1.xhtml4
------ ......
管理员可以访问所有页面
来宾只能访问第1、2和3页

如何将角色来宾排除在访问第1、2和3页之外

<security-constraint>
   <display-name>excluded</display-name>
   <web-resource-collection>
      <web-resource-name>No Access</web-resource-name>
      <url-pattern>/views/page1.xhtml</url-pattern>
      <url-pattern>/views/page2.xhtml</url-pattern>
      <url-pattern>/views/page3.xhtml</url-pattern>
   </web-resource-collection>
   <auth-constraint />
   <user-data-constraint>
      <transport-guarantee>NONE</transport-guarantee>
   </user-data-constraint>
</security-constraint>

排除
禁止进入
/视图/页面1.xhtml
/视图/页面2.xhtml
/视图/页面3.xhtml
没有一个

此代码示例将停止所有角色对第1、2和3页的访问,但我只想停止角色来宾对这些页面的访问

您忘记在


首先,您需要在servlet容器中配置一个安全域,该域允许容器对数据库、LDAP服务器、纯文本文件等执行身份验证。请查看servlet容器的文档,因为这是每个容器的特定内容

然后,您必须将配置登录到您的
web.xml
,作为一个起点,您将非常乐意使用
BASIC
登录类型(以验证容器是否正确验证了用户),但稍后您将希望拥有自己的登录表单。基本登录配置如下所示:

<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>default</realm-name>
</login-config>



  • “管理员和来宾”是2个角色,而不是3个。有多少个角色?是否需要对所有角色进行身份验证?还是只有一个角色在认证后可以访问某些页面?您所说的都是正确的,并且已经实现了。我的问题是,我希望来宾角色可以访问除第1、2和3页之外的所有页面,并且角色管理员可以访问所有页面。因此,只需将其他角色添加到
    部分即可。遗憾的是,无法告诉容器您想要所有角色,但
    X
    <security-role>
        <role-name>admin</role-name>
    </security-role>
    
    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>default</realm-name>
    </login-config>
    
    <auth-constraint>
      <role-name>ADMIN</role-name>
      <role-name>MODERATOR</role-name>
    </auth-constraint>
    
    <security-role>ADMIN</security-role>
    <security-role>MODERATOR</security-role>