2016-04-02 60 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