【问题标题】:Return a 401 when unauthenticated in Play在 Play 中未经身份验证时返回 401
【发布时间】:2012-03-22 14:53:02
【问题描述】:

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

当身份验证失败时,我如何自定义 Play 的行为?

【问题讨论】:

    标签: playframework


    【解决方案1】:

    安全模块是最简单的 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();
    }
    ...
    

    【讨论】:

    • 啊,很好。我对 Play 很陌生,没想过复制模块代码。我认为我想要编辑的是 checkAccess 方法 - 并不总是调用 login(),在某些情况下我会想要返回 401。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-10-25
    • 2021-09-12
    • 2022-01-17
    • 1970-01-01
    • 2018-08-12
    • 2019-09-13
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多