Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring安全性:两个拒绝访问的页面/处理程序,具体取决于访问的资源_Java_Spring Security - Fatal编程技术网

Java spring安全性:两个拒绝访问的页面/处理程序,具体取决于访问的资源

Java spring安全性:两个拒绝访问的页面/处理程序,具体取决于访问的资源,java,spring-security,Java,Spring Security,例如,我有: <intercept-url pattern="/aaa/**" access="ROLE_AAA" /> <intercept-url pattern="/bbb/**" access="ROLE_BBB" /> 并且,相应地,如果用户想要page/aaa,同时又没有角色role\u aaa-我想让他重定向到page/access denied aaa/ 而且,如果他试图获取/bbb,并且没有角色\u bbb->页面/access denied bb

例如,我有:

<intercept-url pattern="/aaa/**" access="ROLE_AAA" />
<intercept-url pattern="/bbb/**" access="ROLE_BBB" />

并且,相应地,如果用户想要page/aaa,同时又没有角色role\u aaa-我想让他重定向到page/access denied aaa/

而且,如果他试图获取/bbb,并且没有角色\u bbb->页面/access denied bbb/

目前我只能描述一个AccessDeniedHandler,带有一个公共AccessDeniedPage


它通常是如何实现的?最好使用Spring安全性

您可以始终实现自己的
AccessDeniedHandler
。下面是我通过扩展默认值(包和导入被省略)所做的一个示例:

首先,记住:这只是一个想法。这是可行的,但可以改进

基本上,它有一个映射,其中键是受保护的资源,值是它们的错误页。并且它有一个默认值。
它使用确定当前请求的错误页,以便您可以正常使用ant路径。在确定错误页之后,类只需调用其超类的方法(
AccessDeniedHandlerImpl

更好的配置方法如下:

<property name="errorPagesByRoles">
  <map>
    <entry key="ROLE_AAA" value="/errorpageaaa.jsp" />
    <entry key="ROLE_BBB" value="/errorpagebbb.jsp" />
  </map>
</property>

但是我找不到一种方法来知道是什么角色导致了这个错误。如果您查看代码,您会发现这些信息丢失了

<bean id="pbrADH" class="com.foo.PageByResourceAccessDeniedHandler">
  <property name="defaultErrorPage" value="/errorpagedefault.jsp" />
  <property name="errorPagesByPaths">
    <map>
      <entry key="/aaa/**" value="/errorpageaaa.jsp" />
      <entry key="/bbb/**" value="/errorpagebbb.jsp" />
    </map>
  </property>
</bean>
...
<http auto-config="true">
    <access-denied-handler ref="pbrADH" />
    ...
</http>
<property name="errorPagesByRoles">
  <map>
    <entry key="ROLE_AAA" value="/errorpageaaa.jsp" />
    <entry key="ROLE_BBB" value="/errorpagebbb.jsp" />
  </map>
</property>