【发布时间】:2012-03-22 14:53:02
【问题描述】:
运行中的安全模块(如果相关,则为 1.2.4)的行为是 302 重定向到登录页面。这对于大多数网页来说已经足够了。我有一些用于 AJAX 调用的路由。对于这些,我想在用户未经身份验证时返回 401,而不是返回重定向。
当身份验证失败时,我如何自定义 Play 的行为?
【问题讨论】:
标签: playframework
运行中的安全模块(如果相关,则为 1.2.4)的行为是 302 重定向到登录页面。这对于大多数网页来说已经足够了。我有一些用于 AJAX 调用的路由。对于这些,我想在用户未经身份验证时返回 401,而不是返回重定向。
当身份验证失败时,我如何自定义 Play 的行为?
【问题讨论】:
标签: playframework
安全模块是最简单的 Play 模块之一。我将其视为一个起点或示例,您可以从中构建自己的更复杂的身份验证实现。因此,我的建议是将模块的内容直接复制到您的项目中(从而基本上消除了实际的模块依赖关系)。
然后,您可以随意修改它 - 大部分逻辑都在一个名为 Secure 的控制器中。例如,您描述的行为可以通过修改authenticate 方法轻松实现。从方法看下面的sn-p——cmets中的那行是我加的:
...
if(validation.hasErrors() || !allowed) {
flash.keep("url");
flash.error("secure.error");
params.flash();
// you can check if ("POST".equalsIgnoreCase(request.method)) here...
login();
}
...
【讨论】: