问题标签 [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 回答
2814 浏览

http - http security hasRole() 方法是如何工作的

我在 Spring 中开发了一个 RESTful API,它从数据库 (MongoDB) 中检索用户信息并将该数据返回给使用此 REST API 的客户端。但在检索数据之前,REST API 会检查用户是否为管理员。只有管​​理员可以执行 GET 操作来检索用户信息

所以在我的 securityconfig.java 类中我有这个:

现在,用户都有自己的角色,一切都按预期工作,因为当我打电话时curl adminusername:adminpassword@localhost:8080/users/get/AllUsers

我能够检索所有用户,因为用户名为 的用户adminusername是管理员并且他具有权限。但是,如果我adminusername用非管理员用户名替换,我会收到拒绝访问错误。

我的问题是,adminusername:adminpassword@localhost:8080.... 之前的部分是 HTTP 请求的标头吗?

我问的原因是因为我需要创建一个能够登录的客户端,验证他的凭据(用户名和密码),并将用户名和密码用作会话 id,以便客户端在任何时候发出 HTTP 请求登录后调用,用户名和密码附加到头部并由 REST API 处理。

hasRole() 的

在安全配置中依赖于username:password@localhost:8080 之前的...。这与@RequestHeaderspring rest API 是一样的吗?

0 投票
1 回答
1729 浏览

spring - 是否可以在一个 redis 服务器上使用两个不同的 spring-session 应用程序?

我已经开始成功地使用 spring session 与一个 nginx、两个 tomcats 和一个 redis 服务器来实现集群会话,并且出现了一些问题。首先,当我谈论不同的应用程序时,我指的是两个完全不同的应用程序,而不是同一个应用程序的两个实例。

我可以使用两个或更多不同的 spring-session 应用程序来存储只有一个 redis 服务器在生产中的会话吗?

这些应用程序可以运行在不同的tomcats 实例中吗?

Spring session 如何避免使用一台redis服务器的不同应用程序之间的session id冲突?

是否需要附加后缀或前缀 id 以避免此问题?

0 投票
1 回答
1054 浏览

spring - 如果 redis 不在线,如何将 RedisHttpSessionConfigure 配置为回退

我正在使用 spring-session + redis,如此处所述:http: //docs.spring.io/spring-session/docs/current/reference/html5/guides/httpsession-xml.html

如何配置 RedisHttpSessionConfigure 以便本地开发不需要 redis 并且应用程序将简单地默认为容器会话处理?

0 投票
2 回答
4618 浏览

java - 使用 Spring Boot 在 Spring REST 中的会话

如何使用 Spring Boot 在 Spring REST 中创建会话?我已经准备好带有 REST API 的应用程序,现在我只需要在其中应用会话。我已经看到了 Spring REST 和 Spring Boot 的两种方法

http://docs.spring.io/spring-session/docs/current/reference/html5/guides/rest.html

http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html#boot-sample

那么,我同时使用这两种方式,那么我需要将两种方式结合起来吗?请帮忙

0 投票
2 回答
2000 浏览

java - 如何检查过滤器中是否存在 HttpSession

我有一个 javax.servlet.Filter,如果 HttpSession 是新的,我想在其中重定向到登录页面,如果 HttpSession 过期,我想重定向到注销页面,如果存在 HttpSession,我想重定向到其他页面。

问题是会话过期后,注销页面不呈现。如何让它工作?

0 投票
2 回答
2862 浏览

spring-cloud - 使用 spring-session 在微服务之间传播凭据的最佳方法

我们使用的架构与spring.io 上的这篇出色指南中描述的架构非常相似。我们的网关处理身份验证,会话使用 spring-session 存储在 Redis 中。我们微服务的端点是安全的,也使用 spring-session。

在微服务中,我需要调用另一个微服务的端点。我通过发现客户端轻松获得了 URL,但我需要提供凭据,但我不确定实现这一目标的最佳方法。

我正在考虑从 HttpRequest 中获取 SESSION cookie,将其存储在某种线程局部变量或请求范围 bean 中,并在 RestTemplate 中使用它来调用第二个微服务。我需要这个请求范围的 bean,因为 RestTemplate 将用于服务层,即不在 MVC 控制器中,而且我不想用从 cookie 中获得的会话标识符污染我的服务层方法。

有没有更好的方法来满足这种需求?Spring Cloud 中是否已经对此提供了一些支持?

非常感谢您的意见

0 投票
1 回答
3703 浏览

spring - 在不使会话无效的情况下,在 Spring-Session(Redis)和 Spring-security 中注销用户?

在切换到spring-session之前如何在spring security中正确注销用户工作正常。我们不想在用户注销后使会话无效。

但是在开始使用 redis 的 spring-session 之后,用户并没有被注销。我现在需要使用new SecurityContextLogoutHandler().logout(request, response, authentication);

这会导致会话无效。有没有办法注销用户而不必使会话无效?

0 投票
0 回答
3927 浏览

spring-session - Spring Session + REST 和 x-auth-token

我是使用 Spring Session 的新手。我打算在 REST API 上使用 Spring Session。我遵循了一个例子,但是有一些不清楚的地方。我尝试制作的流程是: 1. 请求登录,在 http 标头中提供用户名和密码。正如我所看到的,有关会话的信息保存到 Redis。2. 请求提供 sessionID 的 REST API 的任何资源。它抛出一个异常,说应该进行完整的身份验证。我认为如果我在标题中提供 sessionID 就足够了?但事实并非如此。是否可以使用 Spring Session 实现上述流程?提前致谢。

0 投票
1 回答
1911 浏览

spring-session - 安全配置 - configureGlobal

使用 Spring Session REST 示例,我很好奇是否可以进行以下流程: 1. 第一次,用户传递其凭据、用户名和密码。2. Spring Session 将生成一个令牌,将其放入 Redis 3. 下次用户请求一些资源时,它会传递其 tiken。我的问题是以下代码是硬编码的: code @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); } code`我怎样才能使它成为动态的?提前致谢。

0 投票
1 回答
825 浏览

spring-security - Spring session 存储在 DB + Spring 安全认证,集群环境

我在 Spring 4 上有一个应用程序,具有用于身份验证的 Spring Security,以及用于在集群环境中共享会话的 Spring session。

我从 Spring Session 实现 sessionRepository 以将会话存储在数据库中,因此当我进入站点 spring 会话时,创建一个名为“SESSION”的 cookie 并将其存储在数据库中。

这个 session-DB 实现的想法在这里:

如何在 Spring 4 中进行基于关系数据库的 HTTP 会话持久性?

此时我有一个cookie“SESSION”。当我登录网站时,spring security 会创建另一个 cookie “JSESSION”,但这并未存储在数据库中,并且该 cookie 具有“身份验证信息”。

我的问题是:这个实现对于集群环境是否正确?还是我需要再做一次修改?

提前致谢。

编辑2:

我最近测试了我的应用程序,我对我的解释犯了一个错误,当我进入该站点时,即使我登录“SESSION”cookie 仍然有一个 cookie“SESSION”,但是如果我清理了另一个 cookie,则没有另一个 cookie session 表并刷新用户注销的站点。这是正确的行为吗?

编辑:

这是我来自 SecurityConfig 的“配置”(从 WebSecurityConfigurerAdapter 扩展)。

这是我的登录成功处理程序:

}