Play Framework安全模块:登录JSON响应界面



我使用的是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的名称)来确定登录用户是谁

最新更新