在Play中未经身份验证时返回401

时间:2012-03-22 02:13:48

标签: playframework

正在运行的安全模块(1.2.4,如果相关)的行为是302重定向到登录页面。这对大多数网页来说都足够了。我有一些在AJAX调用中使用的路由。对于这些,我想在用户未经身份验证时返回401,而不是返回重定向。

如何在身份验证失败时自定义Play的功能?

1 个答案:

答案 0 :(得分:1)

安全模块是最简单的Play模块之一。我将它视为一个起点或示例,您可以从中构建自己的,更复杂的身份验证实现。因此,我的建议是将模块的内容直接复制到项目中(从而基本上消除了实际的模块依赖性)。

然后,您可以根据需要对其进行修改 - 大多数逻辑都在一个名为Secure的控制器中。例如,通过修改authenticate方法可以轻松实现您描述的行为。请查看方法中的以下代码段 - 评论中的行已由我添加:

...
if(validation.hasErrors() || !allowed) {
    flash.keep("url");
    flash.error("secure.error");
    params.flash();
    // you can check if ("POST".equalsIgnoreCase(request.method)) here...
    login();
}
...