2016-04-02 97 views
0

我有spring启动代码来验证数据库的使用。它会生成x-auth令牌或会话。外部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身份验证令牌,其他Web服务将用于生成被禁用令牌。

回答

1

由于您使用的是Redis。假设用户有一个id(user.id = toto12) 您应该在服务器端执行用户检查,而不是在客户端执行。

过程以检查服务器端: 1.检查AUTH的JdbcTemplate如这样做,

  • 然后,获取用户登录并与试图在Redis的登录用户比较。例如,如果为空,则在Redis中创建新记录[例如auth:users:toto12 = sessionid]。

  • 如果所有这些测试工作,返回令牌假设用户在登录权利。

  • 1

    你检查Spring Cloud Security?另外User Account and Authentication Server可能会有用。它可以处理您描述的情况:

    将登录限制为只有一个Web服务,它将生成x-auth令牌,其他Web服务将被禁用以生成令牌。

    对于会话用例检出Spring Session项目。它也支持Redis。

    我有弹簧启动代码来验证数据库的使用。它 生成x-auth令牌或会话。外部redis服务器是 管理会话,我如何将用户信息放在 会话中,以便其他用户不能修改任何其他用户的数据 他们会交叉检查会话所属的人。

    +0

    我认为http://docs.spring.io/spring-session/docs/current/reference/html5/guides/findbyusername.html,应该是解决方案 – Chetan