0

私はプレイ フレームワーク バージョン 1.2.5 を使用しています。セキュリティ モデルをアプリケーションに追加しました。ビューがユーザーのアクセス許可に従っていくつかの html メニューを非表示にすることを確認します。また、ユーザーがログに記録されていることなども確認します(ビューに関する私の現在の質問)このようにSecurityクラスでcheckメソッドを使用しました

static boolean check(String profile) {
    LicenseType license = LicenseType.valueOf(profile);
    User user = User.find("byEmail", connected()).first();
    return user.hadLicense(license);
} 

たとえば、私のテンプレートではこれを行います

<html><body>
        #{secure.check "ADMIN"}
             <a href="link-to-admin-page" >
        #{/secure.check}
        .... some html 
        #{secure.check "EDIT"}
              <div>some html here </div>
        #{/secure.check}
        .... some html 
        #{secure.check "ADD"}
              <div>some html here </div>
        #{/secure.check}

</body></html>

私の質問はこのようなものです。この場合、このような単一のビューは、電子メールでユーザーを選択するためにデータベースに 4 回アクセスすることを意味します。セキュリティを確認するだけですか?

ありがとうございました 。

4

2 に答える 2

0

あなたが提供したコードサンプルから、ユーザーはすでにログインしているようです。そのため、ユーザー ライセンス変数をセッションに保存してから、比較を行うための静的メソッドを用意することをお勧めします。ライセンスをキャッシュ(memcache)に均等に保存できます

例えば

static boolean check(String profile){   
        LicenseType license = LicenseType.valueOf(profile);       
        return User.hadLicense(license, connectedLicense());  
   }

注意: connectedLicense() - ログイン中のユーザー ストアのライセンスです。

于 2013-06-17T20:08:21.290 に答える