2011-09-18 56 views
1

我有一個安全類,看起來像這樣:@Check(及其相關方法)永遠不會運行

package controllers; 

import play.Logger; 

public class Security extends Secure.Security { 
    static boolean authenticate(String username, String password) { 
    return password.equals("banan"); 
    } 

    static boolean check(String profile) { 
    Logger.info("profile: %s", profile); 
    if ("user".equals(profile)) { 
     Logger.info("connected: %s", connected()); 
     return connected().equals("user"); 
    } 

    return false; 
    } 

    static void onAuthenticated() { 
    Logger.info("Login by user %s", connected()); 
    } 

    static void onCheckFailed() { 
    Logger.info("Check failed!", "omg"); 
    } 

    static void onDisconnect() { 
    Logger.info("Logout by user %s", connected()); 
    } 

    static void onCheckFailed(String profile) { 
    Logger.warn("Failed auth for profile %s", profile); 
    forbidden(); 
    } 
} 

而且看起來像這樣一個控制器:

@Check("user") 
@With(Security.class) 
public class Person extends Controller { 

    public static void create() { 
    List<models.person.Person> persons = models.person.Person.find(
     "order by createdAt desc").fetch(10); 

    render(persons); 
    } 
} 

的檢查方法不會被調用。甚至沒有checkAccess(在Secure類中)被調用。有任何想法嗎?

回答

3

從查看您發佈的代碼,我可以看到的一個錯誤(如果您與secure module page上的說明進行比較),應該使用@With(Secure.class)

所以,你的代碼

@Check("user") 
@With(Security.class) 
public class Person extends Controller { 

改變

@Check("user") 
@With(Secure.class) 
public class Person extends Controller { 
+0

你是正確的我的朋友,是解決這個問題,謝謝! –