问题标签 [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.

0 投票
1 回答
159 浏览

java - 使用安全的 Web 服务(Spring Session)

我已经实现了我的应用程序,如本例所示

http://spring.io/blog/2015/01/20/the-resource-server-angular-js-and-spring-security-part-iii

有一个UiApplication(端口 8080)和两个 ResourceApplication(端口 8090 和 9000)

身份验证的工作方式如示例中所示,使用 Spring Session 和 Redis。

我的情况是:

  • 用户已登录UiApplication

  • ResourceApplication用户向A发送请求

  • ResourceApplicationA收到请求并想消费ResourceApplicationB

我的问题: A 从BResourceApplication获得 401 UnauthorizedResourceApplication

是否可以使用向ResourceApplicationA 发送请求的用户的会话?

0 投票
1 回答
3925 浏览

spring - 在销毁期间不会从 Redis 中删除存储在 Spring (HTTP) Session 中的数据

我正在使用新发布的 Spring Session 组件进行 PoC。这是由 Redis 存储库备份的,其中 Session 和存储在 session 中的对象/数据都被持久化到其中。

  1. 会话在应用程序中创建
  2. 在 Redis CLI 中运行“Keys *”命令并看到一个新条目(如“spring:session:sessions:6b55103a-baf5-4a05-a127-3a9cfa15c164”)
  3. 从应用程序中,向会话添加了一个自定义 bean
  4. 在 Redis CLI 中运行“Keys *”命令并看到该 bean 的另一个新条目(例如“\xac\xed\x00\x05t\x00\tcustomer1”,因为 bean 有一个值为 'customer1' 的字符串)
  5. 我已经配置了 30 秒的自动过期时间,并让该应用程序在此期间未使用
  6. sessionDestroyEvent 被触发并在实现 ApplicationListener 的侦听器中捕获
  7. 在 Redis CLI 中运行“Keys *”命令,现在为会话创建的第一个条目消失了,但自定义 bean 对象(customer1)仍然留在 Redis 中

问题

清理 Redis Store 是用户的责任吗?如果我的会话中存储了许多数据元素,我是否必须在会话销毁(注销和超时事件)期间从 redis 存储中手动清理它们。

更新

虽然我发布了这个问题并返回(可能在 3/4 分钟后)到 Redis-CLI 列出密钥,但现在我没有找到 Customer1 对象。那么这是否意味着 Redis 会定期执行清理,例如垃圾收集?

0 投票
0 回答
5934 浏览

spring - 嵌入式 Redis 尝试连接真实的 Redis 服务器,导致异常

我正在尝试将嵌入式 redis 用于我的devspring 配置文件(我也有一个cloud连接到真实 redis 的配置文件)。

但是,似乎我的嵌入式 redis 配置试图连接到真正的 redis。

这是我在运行dev配置文件时遇到的错误:

JedisDataException NOAUTH是因为我已经在真实的 Redis 服务器上激活了身份验证,它会尝试连接到真实的服务器......

这是我的 Spring 配置:

“开发”和“测试”配置:

云配置:

这是我的依赖:

简介:

编辑

这是我得到的异常,下面给出了相应的配置:

这是我编辑的redis配置:

0 投票
1 回答
1973 浏览

hazelcast - 如何使 Hazelcast 会话过期

我正在使用 spring-session 库来保持 Hazelcast 上的会话,例如:

1.

我怎样才能使 Hazelcast 上的会话过期在 Hazelcast 管理上,会话条目的数量一直在增加

0 投票
1 回答
667 浏览

java - Spring Session 会保持 Web Flow 状态吗?

我有几个看起来很适合 Spring Web Flow 的向导,但是 Web Flow 在服务器端存储了重要的流状态,我不确定在哪里。我正在使用快速集成和部署周期,因此必须在服务器重启时保持持久性。

我认为 Web Flow 使用SessionBindingConversationManager将流状态存储在 中HttpSession,因此 Spring Session 会将该状态持久保存到外部会话存储中。这个对吗?如果是这样,除了配置 Spring Session 并将 Web Flow 组件添加到我的应用程序之外,我是否需要做任何事情?

0 投票
1 回答
1121 浏览

java - Spring Session、Websocket、REST 令牌安全

我们目前有一个 Spring 应用程序,它包含一个 REST API 和 Websocket 代理端点,以获取数据库更改的实时更新。

我们已经成功迁移到带有嵌入式 redis 服务器的 Spring Session 项目,该服务器通过基本身份验证进行身份验证,并且会话 ID 可以在后续请求中用作 x-auth-token 标头。

我们遇到的问题是保护 Websocket。在 Angular 上,我们有一个围绕 stomp.js / sockjs 库的包装器指令,但我们似乎无法弄清楚如何在 Websocket 升级请求上设置 x-auth-token 标头。

我们做错了什么吗?处理这种安全方案的推荐方法是什么?

堆:

  • 雄猫 7.0.57
  • 弹簧安全 4.0.0.RC2
  • 春季会议 1.0.0.RELEASE
  • 春天MVC 4.1.4
  • AngularJS 1.2.28
0 投票
1 回答
2889 浏览

spring-session - 使用 spring-session 获取当前会话

这是我的问题:我正在编写一个平台,我将提供给客户来实施他们的项目。所以在我的平台上,我创建了一个SessionService方法,其中我有类似getCurrentSession, getAttribute,setAttribute等的方法。在 spring-session 之前我getCurrentMethod看起来像这样:

@Override public HttpSession getCurrentSession() { if (this.session == null) { final ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); return attr.getRequest().getSession(true); // true == allow create } return this.session; }

它工作得非常好,虽然它看起来很丑而且没有像 redis 这样的支持。现在我想迁移到spring-session并且我希望使用SessionRepository来查找用户的当前会话,但是我只能getSession(String id)在那里看到一个。我相信 id 存储在 cookie 中,所以要使用它,我可能必须将HttpServletRequest对象从我的控制器传递到我的门面,再到非常靠近 db 层的服务层。这对我来说似乎是一个非常糟糕的主意,所以我的问题是:有没有办法让 currentSession 靠近 db 层?我认为的一种方法是编写一个拦截器,该拦截器将被调用控制器,它将在存储库中设置当前会话,或者可能是服务?我只是不确定这是正确的方法。

0 投票
1 回答
1277 浏览

spring-security - 春季会议记住我

我已经尝试过春季会议样本,这真的很有趣。

我正在尝试执行以下操作,我正在尝试将 spring 会话插入到 restful 服务中,我想根据请求为会话 id 设置不同的 TTL

例如,使用我的宁静服务的客户可能会记住我的选项开/关。

当记住我时,我想将 TTL 设置为 90 天,而对于记住我,我想将 TTL 设置为 5 分钟,我们如何在春季会议中实现这一点。

另外,我们如何为用户管理(限制)并发会话,并发会话可以通过与 Spring Security 集成来实现,还是与 Spring 会话中提供的功能相同。

请提出建议,非常感谢任何帮助

0 投票
2 回答
5464 浏览

redis - Spring Session,嵌入式 Redis 服务器错误

无法启动嵌入式 Redis 服务器,它给出以下错误。可能的原因是什么。我正在开发 Wildfly,Ubuntu。以下是堆栈跟踪。

... 25 更多原因:org.springframework.beans.factory.BeanCreationException:创建 org.egov.infra.config.session.RedisHttpSessionConfiguration 中定义的名称为“redisServer”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.RuntimeException: Can't start redis server。检查日志以获取详细信息。在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 在 org.springframework.beans.factory .support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 在 org.springframework.beans.factory.support.AbstractBeanFactory $1。ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.8.0_31] 在 sun .reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [rt.jar:1.8.0_31] 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.8.0_31] 在 java.lang .reflect.Constructor.newInstance(Constructor.java:408) [rt.jar:1.8.0_31] at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ... 27 更多原因:java.lang .RuntimeException: 无法启动 redis 服务器。检查日志以获取详细信息。在 redis.embedded。

0 投票
1 回答
1835 浏览

java - Spring Security 不使用 Spring Session EnableRedisHttpSession 重用身份验证数据

我能够使用来自https://github.com/dsyer/spring-security-angular/blob/master/vanilla/README.md的示例 Spring Boot Groovy Maven 实现成功运行此配置。当应用程序代码在 Java 和 Gradle 2.3 中实现时,它不起作用。在这种情况下,OPTIONS 响应有一个新的 X-Auth-Token。

尝试将提供的 maven 构建与我的 java 类一起使用,但仍然得到相同的 OPTIONS 401 未经授权的响应。所以这不是 Gradle 问题。

将两个 ResourceApplication Groovy 类复制到我的 Gradle 构建中,Angular ui 成功获得 OPTIONS 200 OK。所以java中的Spring CORS过滤器存在问题。

我有用于 java 和 groovy 的 Gradle 插件,sourceCompatibility 和 targetCompatibility = 1.7

java 版本 "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, 混合模式)

开发人员控制台日志验证是否从 ui 服务器发送了相同的令牌并由 angular 客户端接收,但报告了 CORS 错误。

Cross-Origin Request Blocked :同源策略不允许在http://localhost:9000/读取远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。本地主机:9000

}

}

}

Groovy 版本:

请求方法:OPTIONS
状态码:200 OK

请求标头:
主机:localhost:9000
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
接受:text/html,application/xhtml+xml,application/xml;q= 0.9, / ;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: localhost:8080
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x -auth-token,x-requested-with
连接:保持活动

响应标头:
Access-Control-Allow-Headers:x-auth-token、x-requested-with
Access-Control-Allow-Methods:POST、PUT、GET、OPTIONS、DELETE
Access-Control-Allow-Origin:*
Access- Control-Max-Age: 3600
Content-Length: 0
Date: Tue, 31 Mar 2015 21:20:28 GMT
服务器: Apache-Coyote/1.1

请求方法:GET
状态码:200 OK

请求标头:
主机:localhost:9000 用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Accept: application/json, text/plain, /
Accept-Language: en-US ,en;q=0.5
Accept-Encoding: gzip, deflate
X-Auth-Token: 80e0c2d2-dab4-435d-886e-ae28bc8e636f
X-Requested-With: XMLHttpRequest

响应标头:
Access-Control-Allow-Headers:x-auth-token、x-requested-with
Access-Control-Allow-Methods:POST、PUT、GET、OPTIONS、DELETE
Access-Control-Allow-Origin:*
Access- Control-Max-Age: 3600
内容类型: application/json;charset=UTF-8
日期: Tue, 31 Mar 2015 21:20:28 GMT
服务器: Apache-Coyote/1.1
Strict-Transport-Security: max-age= 31536000; includeSubDomains
Transfer-Encoding: chunked
Referer: localhost:8080/
Origin: localhost:8080
Connection: keep-alive

Redis 服务器密钥:
1)“spring:session:expirations:1427838660000”
2)“spring:session:sessions:80e0c2d2-dab4-435d-886e-ae28bc8e636f”

Java版本:

请求方法:OPTIONS
状态码:401 Unauthorized

请求标头:
主机:localhost:9000
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
接受:text/html,application/xhtml+xml,application/xml;q= 0.9, / ;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: localhost:8080
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x -auth-token,x-requested-with
连接:保持活动

响应标头:
Access-Control-Allow-Headers:x-auth-token、x-requested-with
Access-Control-Allow-Methods:POST、PUT、GET、OPTIONS、DELETE
Access-Control-Allow-Origin:*
Access- Control-Max-Age:3600
允许:GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、PATCH
内容长度:0
日期:2015 年 3 月 31 日星期二 20:50:26 GMT
服务器:Apache-Coyote/1.1
Strict -传输安全:max-age=31536000;includeSubDomains
WWW-Authenticate: Basic realm="Spring"
X-Auth-Token: 8af7e1f4-e723-4ce6-8d21-54a7b10369f8

Redis 服务器密钥:
1)“spring:session:sessions:8af7e1f4-e723-4ce6-8d21-54a7b10369f8”
2)“spring:session:expirations:1427836860000”
3)“spring:session:sessions:c6a6cc31-eddc-40dd-99de -a6e1eecbf519"