安全控制器中的身份验证控制器的行为不正确

时间:2011-03-24 18:22:49

标签: java security playframework

我知道已有文章涵盖了这一点,但我有一个 即使在阅读这些文章后,问题仍未得到解决。

这就是:

我有2个控制器,一个使用此方法的MainController:

public static void login(String username, String password) throws Throwable
{ 
    Secure.authenticate(username, password, false); 
} 

还有一个SecurityController,它是Secure.Security的扩展 方法:

//overrides Security.authenticate(...)
public static boolean authenticate(String username, String password) { 
    return UserDAO.checkUserLogin(username, password); 
}

然后我们有一个视图,弹出一个小的登录屏幕(类似于 twitter的登录信息)。 该视图使用名为correct

的输入字段调用@ {MainController.login()}

当用户点击登录按钮时,登录控制器应该是 用这种行为调用:   - 正确吗?请参阅用户来自的网址   - 不正确?显示带有错误消息的标准登录面板

但这不会发生:

任何情况中播放重定向到登录页面,并且始终没有错误闪烁。 只需普通登录界面,无任何错误信息。

(请注意,确实应该有错误消息,因为用户 在db)中不存在

当我执行首先创建用户时,应用程序会以相同的方式做出反应。

页面登录(...)的网址重定向到:http://localhost:9000/loginremember=false&password=secret&username=Bob

我现在的问题是: 为什么Play会这样做? 为什么不重定向到 它来自哪个页面(使用redirectToOriginalUrl())? 它应该不应该将这些参数提供给Secure的登录方法 至少使用错误消息呈现登录屏幕。

但即使我正确提供详细信息,它仍然只是重定向 到安全模块的登录视图,包含所有参数。

我做错了什么?

事先谢谢, 亲切的问候, 贾斯珀

1 个答案:

答案 0 :(得分:1)

修复了实现不扩展Controller类的类的问题。工作正常。

谢谢@Felipe Oliveira!