我有弹簧启动代码来验证数据库中的使用。它生成x-auth令牌或session.External redis服务器正在管理会话,我如何将用户信息放在会话中,以便其他用户无法修改他们将被交叉检查到的任何其他用户的数据会议所属的人。
以下是代码段:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
JdbcTemplate jdbcTemplate;
@Override
protected void configure(AuthenticationManagerBuilder builder) throws Exception {
builder.jdbcAuthentication().dataSource(jdbcTemplate.getDataSource())
.usersByUsernameQuery(
"select username,password, enabled from users where username=?")
.authoritiesByUsernameQuery(
"select username, role from user_roles where username=?");
}
此外,我想将登录限制为仅一个Web服务,该服务将生成x-auth令牌,其他Web服务将被禁用以生成令牌。
答案 0 :(得分:1)
因为你正在使用Redis。假设用户有一个id(user.id = toto12) 您应该在服务器端而不是在客户端执行用户检查。
检查服务器端的过程: 1.像你一样检查auth jdbcTemplate,
然后,让用户登录并与尝试登录REDIS的用户进行比较。如果为空,请在Redis中创建一个新记录[例如,例如用户:toto12 = sessionid]。
如果所有这些测试都有效,请返回令牌,假设用户有权登录。
答案 1 :(得分:1)
您检查了Spring Cloud Security吗? User Account and Authentication Server也许有用。它可以处理您描述的情况:
将登录限制为仅生成x-auth令牌的一个Web服务,其他Web服务将被禁用以生成令牌。
对于会话用例检出Spring Session项目。它也支持Redis。
我有弹簧启动代码来验证数据库中的使用。它 生成x-auth令牌或session.External redis服务器 管理会话,我如何将用户信息放入 会话,以便其他用户无法修改任何其他用户的数据 他们将被交叉检查会话所属的人。
答案 2 :(得分:0)