Playframework 在未经验证的情况下返回401

Playframework 在未经验证的情况下返回401,playframework,Playframework,正在使用的安全模块(1.2.4,如果相关的话)的行为是302重定向到登录页面。这对于大多数网页来说已经足够合适了。我有一些在AJAX调用中使用的路由。对于这些,我希望在用户未经身份验证时返回401,而不是返回重定向 如何自定义身份验证失败时播放的内容?安全模块是最简单的播放模块之一。我将其视为一个起点或示例,从中可以构建自己的、更复杂的身份验证实现。因此,我的建议是将模块的内容直接复制到您的项目中(从而从本质上消除实际的模块依赖性) 然后,您可以根据自己的意愿对其进行修改—大多数逻辑都位于一个名

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


如何自定义身份验证失败时播放的内容?

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

然后,您可以根据自己的意愿对其进行修改—大多数逻辑都位于一个名为
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();
}
...

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

然后,您可以根据自己的意愿对其进行修改—大多数逻辑都位于一个名为
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();
}
...

啊,很好。我是个新手,没有想过要复制模块代码。我想我要编辑的是checkAccess方法,而不是总是调用login(),在某些情况下,我想返回一个401。谢谢啊,很好。我是个新手,没有想过要复制模块代码。我想我要编辑的是checkAccess方法,而不是总是调用login(),在某些情况下,我想返回一个401。谢谢