问题标签 [spring-session]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring Session cookie 永不过期
我最近实现了 Spring Session。
我自己实现了 sessionRepository,因此在创建会话时,我将 setMaxInactiveIntervalInSeconds 配置为 60 秒。如果我调试此代码,会话对象具有正确的最大非活动间隔,但如果我在网站上等待而不做任何事情,则会话永远不会过期。
有什么想法可以解决这个问题吗?谢谢
spring-security - 如何使用 Spring Session + Spring security xml 配置和多重安全过滤器
背景
大家好,我们有Spring
使用Spring security
. 我们通过定义定义了安全过滤器
哪里filter-chain-map
在web.xml
我们做的
一切都很好:)。现在Spring session
根据 以下几行进行连接redis
时doc
创建一个filter
名为springSessionRepositoryFilter
. 所以基本上我们所做的就是在每个自定义filter-chain
中添加该过滤器作为第一个过滤器。IE:
结果:该应用程序似乎运行良好,并且monitoring
通过redis-cli
显示spring
正在与之通信redis
。
问题
在springSessionRepositoryFilter
里面使用filter-chain
可以吗?还是我们滥用了过滤系统?
谢谢,
橡木
编辑
似乎上述方法不适用于希望Authenticate
从代码中获取用户的情况,即
将失败。也许是因为它不足以通过filter-chain
of运行它org.springframework.security.web.FilterChainProxy
。
你觉得如何运行filter
它web.xml
?
以上将强制运行springSessionRepositoryFilter
,springSecurityFilterChain
但在此示例org.springframework.web.filter.DelegatingFilterProxy
中被调用两次。springSessionRepositoryFilter
在过滤器之前作为过滤器运行的任何其他方法springSecurityFilterChain
?
spring-security - Spring Security OAuth + Spring Session
我正在使用 Spring Security OAuth 构建具有基于令牌的身份验证的应用程序(使用这篇文章http://porterhead.blogspot.com/2014/05/securing-rest-services-with-spring.html)。
在下一步中,我想用令牌存储一些额外的数据。我决定,Spring Session 已经足够了。首先,它有HeaderHttpSessionStrategy
(用户在自定义标头中发送会话 ID - X-Auth-Token
),其次,它支持不同的存储(包括 Redis - 适合快速访问会话数据)。
Spring Security OAuth 使用Bearer Authorization
,这意味着我需要创建子类 from HeaderHttpSessionStrategy
,它将返回正确的会话 ID(而不是 from X-Auth-Token
)。
所以我的问题是:
- 此刻如何在 Spring Security OAuth 中挂钩登录成功方法并使用提供的 ID(ID == 新生成的令牌)创建会话?
- 如何挂钩注销方法?
- 在这种情况下使用 Spring Session 是否正确?如果没有,有什么替代方案?
redis - 使用以 Redis 作为后端的 Spring Session 时,默认会话超时是多少以及如何配置它
我的应用程序目前使用Spring Session和 Redis 作为后端。
我搜索了 Spring Session 的官方文档,但无法找到使用该模块时的默认会话超时。
另外,如果需要,我不确定如何更改默认超时。
有人可以建议吗?
java - bean 的会话范围如何在 Spring MVC 应用程序中工作?
我是 Spring MVC 的新手,我对bean的会话范围有疑问。
进入一个项目,我有一个Cart
bean,这个:
所以这个 bean 会被容器自动检测为组件,并通过以下方式将其设置为会话 bean:
因此,据我了解,这意味着它会为每个用户会话自动创建一个 bean。
在我的示例中,Cart
该类表示一个购物车,登录的用户将想要购买的物品放入其中。这是否意味着每个登录的用户部分都存在一个Cart
bean 到HttpSession
? 所以这个 bean 进入了会话,用户可以从中添加或删除项目。这种解释是正确的还是我错过了什么?
另一个疑问与proxyMode = ScopedProxyMode.TARGET_CLASS
属性有关。这到底是什么意思呢?为什么将其应用于此 bean?
spring - 在春季会话中配置 Cookie 域
所以我已经成功地在开发 localhost 域上使用 spring session 和 redis 实现了 SSO。但是当我使用两个子域部署到服务器时。
login.example.com
apps.example.com
他们总是在每个子域上创建新的会话 ID。我已经尝试在 tomcat 配置中使用 Context 进行配置。
但没有运气。
spring-session - 使用 Spring Session 进行单页应用程序的会话过期管理
我使用Spring Session,并且在会话管理方面遇到问题,尤其是在处理会话到期时。
这个想法是向客户端返回一个自定义的 Http Header,例如X-Application-Session-Is-New
,如果会话已过期。
这是我想出的:
问题是我的过滤器似乎并不总是在会话到期时被调用,这可能是因为该请求不是 ajax 请求,并且在此之后立即创建了一个新的会话 ID。
谁能给我指出一个适当的策略来处理单页应用程序上的会话过期?
spring - Zuul上的Spring Security预授权过滤器建立和共享会话
我在一个开发团队中从事一个使用基于 Spring 的微服务的大型项目。我们最近发现了 Spring Cloud 项目,并正在尝试实现 Netflix 服务、Zuul、Eureka、Ribbon 等。
在我们的环境中,在通过外部服务获得预授权之前,没有人可以访问我们的应用程序将在其上运行的域。一旦他们到达我们的应用程序,我们将能够通过授权服务提供的标头令牌获取用户的身份。
我希望 Zuul 使用预身份验证过滤器设置 Spring Security 以建立用户会话,并使用 Spring Session 使会话可用于所有后端微服务。
这是一种合法的方法吗?我能看到的关于 Zuul 安全性的唯一信息是将 OAuth2 令牌代理到后端服务的能力,但我们不需要 OAuth2。有没有更好的方法来建立用户会话并在我们的后端架构中的服务之间共享它?
spring - 使用 Spring Boot、Session 和 Redis 创建会话时未复制会话
我正在尝试使用 Spring Cloud 的 Zuul、Eureka 和我自己的服务来实现微服务架构。我有多个具有 UI 和服务的服务,每个服务都可以使用 x509 安全性对用户进行身份验证。现在我正试图将 Zuul 放在这些服务的前面。由于 Zuul 无法将客户端证书转发到后端,我认为下一个最好的方法是在 Zuul 的前门对用户进行身份验证,然后使用 Spring Session 在后端服务中复制他们的身份验证状态。我遵循了 Dave Syer 的教程,它几乎可以工作,但不是第一次请求。这是我的基本设置:
- Zuul Proxy 在它自己的应用程序集中路由到后端服务。启用了 Spring 安全性来执行 x509 身份验证。成功认证用户。还有带有 @EnableRedisHttpSession 的 Spring Session
- 后端服务还启用了 spring 安全性。我在这里尝试过启用/禁用 x509,但始终要求用户针对特定端点进行身份验证。还使用 Spring Session 和 @EnableRedisHttpSession。
如果您清除所有会话并重新开始并尝试访问代理,那么它会使用 zuul 服务器的证书将请求发送到后端。然后后端服务根据该用户证书查找用户,并认为该用户是服务器,而不是在 Zuul 代理中经过身份验证的用户。如果你只是刷新页面,那么你突然变成了后端的正确用户(在 Zuul 代理中认证的用户)。我正在检查的方式是在后端控制器中打印出 Principal 用户。所以在第一次请求时,我看到了服务器用户,在第二次请求时,我看到了真实用户。如果我在后端禁用 x509,在第一个请求时,我会得到 403,然后在刷新时,它会让我进入。
似乎会话没有足够快地复制到后端,因此当用户在前端进行身份验证时,在 Zuul 转发请求时它还没有到达后端。
有没有办法保证会话在第一个请求(即会话创建)时被复制?还是我错过了确保其正常工作的步骤?
以下是一些重要的代码片段:
Zuul 代理:
祖尔配置:
后端服务:
后端服务配置:
后端控制器之一: