我使用的是play框架提供的安全模块。现在,我试图访问一个受安全模块保护的控制器方法,以获得JSON响应。有没有一种方法可以在不使用提供的登录表单的情况下访问此方法?例如,使用用户名和密码作为url参数
谢谢,joe
不是直接的。安全模块是为基于UI的身份验证而设计的。也就是说,使用HTTP身份验证围绕控制器构建安全性是非常琐碎的。
有许多选项,这取决于您的用例以及如何使其工作。如果你正在构建RESTful web服务,那么使用HTTP Auth可能是一种方法,但如果你正在使用AJAX,它已经使用了登录页面,那么检查cookie可能就是你的答案。
如果查看Http.Request
对象,您会发现它同时包含用户名和密码字段。它们专门用于HTTP身份验证。所以,你可以有一个动作来完成以下
public static void myJSONAction() {
if ("secretuser".equals(request.user) && "secret".equals(request.password)) {
// do some JSON
}
else {
// tell them they are not authorised to this content
unauthorized( "Secret Realm" );
}
}
或者,如果你的JSON在网站上用作AJAX,我会很想只检查安全模块的cookie(查看源代码以找到cookie的名称)来确定登录用户是谁