问题标签 [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 - 使用安全的 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发送请求ResourceApplication
A收到请求并想消费ResourceApplication
B
我的问题: A 从BResourceApplication
获得 401 UnauthorizedResourceApplication
是否可以使用向ResourceApplication
A 发送请求的用户的会话?
spring - 在销毁期间不会从 Redis 中删除存储在 Spring (HTTP) Session 中的数据
我正在使用新发布的 Spring Session 组件进行 PoC。这是由 Redis 存储库备份的,其中 Session 和存储在 session 中的对象/数据都被持久化到其中。
- 会话在应用程序中创建
- 在 Redis CLI 中运行“Keys *”命令并看到一个新条目(如“spring:session:sessions:6b55103a-baf5-4a05-a127-3a9cfa15c164”)
- 从应用程序中,向会话添加了一个自定义 bean
- 在 Redis CLI 中运行“Keys *”命令并看到该 bean 的另一个新条目(例如“\xac\xed\x00\x05t\x00\tcustomer1”,因为 bean 有一个值为 'customer1' 的字符串)
- 我已经配置了 30 秒的自动过期时间,并让该应用程序在此期间未使用
- sessionDestroyEvent 被触发并在实现 ApplicationListener 的侦听器中捕获
- 在 Redis CLI 中运行“Keys *”命令,现在为会话创建的第一个条目消失了,但自定义 bean 对象(customer1)仍然留在 Redis 中
问题:
清理 Redis Store 是用户的责任吗?如果我的会话中存储了许多数据元素,我是否必须在会话销毁(注销和超时事件)期间从 redis 存储中手动清理它们。
更新:
虽然我发布了这个问题并返回(可能在 3/4 分钟后)到 Redis-CLI 列出密钥,但现在我没有找到 Customer1 对象。那么这是否意味着 Redis 会定期执行清理,例如垃圾收集?
spring - 嵌入式 Redis 尝试连接真实的 Redis 服务器,导致异常
我正在尝试将嵌入式 redis 用于我的dev
spring 配置文件(我也有一个cloud
连接到真实 redis 的配置文件)。
但是,似乎我的嵌入式 redis 配置试图连接到真正的 redis。
这是我在运行dev
配置文件时遇到的错误:
这JedisDataException NOAUTH
是因为我已经在真实的 Redis 服务器上激活了身份验证,它会尝试连接到真实的服务器......
这是我的 Spring 配置:
“开发”和“测试”配置:
云配置:
这是我的依赖:
简介:
编辑:
这是我得到的异常,下面给出了相应的配置:
这是我编辑的redis配置:
hazelcast - 如何使 Hazelcast 会话过期
我正在使用 spring-session 库来保持 Hazelcast 上的会话,例如:
1.
我怎样才能使 Hazelcast 上的会话过期(在 Hazelcast 管理上,会话条目的数量一直在增加)?
java - Spring Session 会保持 Web Flow 状态吗?
我有几个看起来很适合 Spring Web Flow 的向导,但是 Web Flow 在服务器端存储了重要的流状态,我不确定在哪里。我正在使用快速集成和部署周期,因此必须在服务器重启时保持持久性。
我认为 Web Flow 使用SessionBindingConversationManager
将流状态存储在 中HttpSession
,因此 Spring Session 会将该状态持久保存到外部会话存储中。这个对吗?如果是这样,除了配置 Spring Session 并将 Web Flow 组件添加到我的应用程序之外,我是否需要做任何事情?
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
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 层?我认为的一种方法是编写一个拦截器,该拦截器将被调用控制器,它将在存储库中设置当前会话,或者可能是服务?我只是不确定这是正确的方法。
spring-security - 春季会议记住我
我已经尝试过春季会议样本,这真的很有趣。
我正在尝试执行以下操作,我正在尝试将 spring 会话插入到 restful 服务中,我想根据请求为会话 id 设置不同的 TTL
例如,使用我的宁静服务的客户可能会记住我的选项开/关。
当记住我时,我想将 TTL 设置为 90 天,而对于记住我,我想将 TTL 设置为 5 分钟,我们如何在春季会议中实现这一点。
另外,我们如何为用户管理(限制)并发会话,并发会话可以通过与 Spring Security 集成来实现,还是与 Spring 会话中提供的功能相同。
请提出建议,非常感谢任何帮助
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。
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"