2012-08-05 36 views
0

這是一個從Java Play! 2 - User management with cookiesJava Play! 2 - 認證沒有意義

從zentask例如

public class Secured extends Security.Authenticator { 

     @Override 
     public String getUsername(Context ctx) { 
      return ctx.session().get("email"); 
     } 

     @Override 
     public Result onUnauthorized(Context ctx) { 
      return redirect(routes.Application.login()); 
     } 

     // Access rights 

     public static boolean isMemberOf(Long project) { 
      return Project.isMember(
       project, 
       Context.current().request().username() 
      ); 
     } 

     public static boolean isOwnerOf(Long task) { 
      return Task.isOwner(
       task, 
       Context.current().request().username() 
      ); 
     } 


} 

對我來說,這並沒有真正有意義跟進。

用戶獲得以下cookie。例如「[email protected]

如果我去「安全」頁面,zentask只檢查電子郵件是否不爲空。這怎麼可能安全?

會話的原因是從db獲取負載。但採用這種方法,他必須不斷檢查用戶是否有權訪問受保護的頁面。

對我來說這並不合理。爲什麼有一個函數getUsername?爲什麼返回類型是一個字符串?

我想要做財產以後這樣的:在

  • 用戶登錄,並得到一個cookie看起來財產以後這樣的「價值= randomString」

  • 安全高速緩存中的例如用戶對象Cache.set(randomstring,userObject);

  • 現在,如果訪問者回來,我檢查他的randomstring是否在我的緩存中,如果是,請檢查現金中的用戶對象是否有權訪問受保護的頁面。

我能夠實現這一點,只是沒有@ Security.Authenticated()註釋。

是否有可能通過此註釋實現此目的?

回答

3

這只是一個sample,沒有別的。您不需要在cookie中存儲電子郵件。你可以舉一個例子,保存一些哈希來標識登錄的用戶,或者做一些其他的匹配。

樣本儘可能簡單,將其更改爲更復雜的場景奠定了開發人員的一面。

順便說一句,所有戲曲的曲奇都有簽名,我真的懷疑你是否可以手動改變它。