我正在构建服务器应用程序 ROOT.war (包含Spring安全性)和UI应用程序 viewer.war 。
是否可以在 ROOT.war 中声明适用于 viewer.war 的spring安全配置?
例如{strong}战争中的intercept-url
:
<security:intercept-url pattern="/viewer/**" access="isAuthenticated()"/>
<security:intercept-url pattern="/**" access="permitAll()"/>
我已经找到了使用hazelcast在Webapp之间“共享”会话信息的解决方案。
设置:
/-服务器Web应用程序,发布服务并提供弹簧安全性
/ viewer-UI Webapp,使用服务器服务并从服务器访问会话数据
修改:
我正在共享会话,因为无法跨两个Web应用程序访问相同的会话数据。
成功登录后,将用户名存储在 ROOT 中的会话中,将无法在 / viewer 中使用(也可以使用文件会话存储)。
但这不是我要问的问题。
我想知道,即使另一个未使用Spring Security的Web应用程序称为 / viewer ,是否也使用spring-security过滤器。 ROOT 中的spring安全配置是否也适用于 / viewer 网络应用?
流量:
答案 0 :(得分:1)
我不确定您是否真正了解您的需求。 Spring Security是一个AOP框架,它使用过滤器拦截请求。每个过滤器都可以根据安全规则拒绝请求。
共享会话(在hazelcast,redis或其他服务器上)的需要来自于您拥有多个ROOT.war服务器,每个服务器负载均衡,并且对于每个用户,您都不知道请求的去向。这些会话必须在服务器之间共享。
我想您可以允许您的客户端访问hazelcast会话,但这的目的是什么?
编辑:我认为您想要的是某种代理。您需要将请求首先放在ROOT上,如果成功登录,则转到VIEWER。
您可以执行以下操作,但是对VIEWER的所有请求都必须通过ROOT。然后ROOT将请求发送到VIEWER。
您还可以采用其他方法,例如JWT。从ROOT生成JWT,并在VIEWER上要求它。