1
播放中的安全模块(如果相关的话为1.2.4)的行为是302重定向到登录页面。这对于大多数网页都是适当的。我有一些在AJAX调用中使用的路由。对于这些,我想在用户未经身份验证时返回401,而不是返回重定向。播放中未认证时返回401
如何定制认证失败时播放的内容?
播放中的安全模块(如果相关的话为1.2.4)的行为是302重定向到登录页面。这对于大多数网页都是适当的。我有一些在AJAX调用中使用的路由。对于这些,我想在用户未经身份验证时返回401,而不是返回重定向。播放中未认证时返回401
如何定制认证失败时播放的内容?
安全模块是最简单的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();
}
...
啊,很好。我对Play很新,并没有想过复制模块代码。我认为我想编辑的是checkAccess方法 - 并不总是调用login(),在某些情况下,我想要返回401。谢谢! – nojo 2012-03-23 03:43:33