2011-09-18 59 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

你是正确的我的朋友,是解决这个问题,谢谢! –