我有一个看起来像这样的安全类:
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();
}
}
还有一个看起来像这样的 Controller :
@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 类中)也不会被调用。有什么想法吗?
最佳答案
通过查看您发布的代码,我可以看到一个错误(如果您与 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 {
关于java - @Check(及其相关方法)永远不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461820/