Deadbolt - 访问失败重定向无效

时间:2013-05-18 14:50:22

标签: redirect playframework-2.0 deadbolt

我正在使用Deadbolt 2和Playframework 2.1

我有一个公共页面,用户点击Action按钮并调用Controller方法,此方法上有@SubjectPresent。如果用户未登录,我想将用户重定向到登录页面,然后在用户登录后执行方法调用。

我通过jsroutes调用控制器方法,如下所示

function launchDemo(demoId){

    jsRoutes.controllers.DemoLaunchApplication.launchDemo(demoId).ajax({

      success: function(data, textStatus) {
        $("#result").html(data);
      },
      error: function(data) {
      alert("error");
          $("#result").html(data);
      }

    }) 
  }

我根据项目示例设置了deadbolt 2.(https://github.com/joscha/play-authenticate/tree/master/samples/java/play-authenticate-usage

我在控制台中收到以下错误。

[error] application - Access to [/test/launch?testId=2] requires a subject, but no subject is present.
[warn] application - Deadbolt: Access failure on [/test/launch?testId=2]

并在结果div中显示登录页面。我想改为重定向到登录页面,登录后运行方法调用。

我确实尝试添加statusCode和ajaxError,但响应头状态为200,每次执行成功块时都显示结果div中的登录表单。

1 个答案:

答案 0 :(得分:2)

看起来您需要更改DeadboltHandler实现的onAuthFailure。如果您复制了示例代码中的那个,它将返回403.相反,您应该返回重定向到您的登录页面。