2012-03-22 70 views
1

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

如何定制认证失败时播放的内容?

回答

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(); 
} 
... 
+1

啊,很好。我对Play很新,并没有想过复制模块代码。我认为我想编辑的是checkAccess方法 - 并不总是调用login(),在某些情况下,我想要返回401。谢谢! – nojo 2012-03-23 03:43:33