Redirect 锁销-访问故障重定向不工作

Redirect 锁销-访问故障重定向不工作,redirect,playframework-2.0,deadbolt,Redirect,Playframework 2.0,Deadbolt,我在Playframework 2.1中使用Deadbolt 2 我有一个公共页面,用户在其中单击一个操作按钮并调用一个控制器方法,这个方法上有@SubjectPresent。如果用户未登录,我想将用户重定向到登录页面,然后在用户登录后执行方法调用 我通过jsroutes调用controller方法,如下所示 function launchDemo(demoId){ jsRoutes.controllers.DemoLaunchApplication.launchDemo(demoId

我在Playframework 2.1中使用Deadbolt 2

我有一个公共页面,用户在其中单击一个操作按钮并调用一个控制器方法,这个方法上有@SubjectPresent。如果用户未登录,我想将用户重定向到登录页面,然后在用户登录后执行方法调用

我通过jsroutes调用controller方法,如下所示

function launchDemo(demoId){

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

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

    }) 
  }
我已根据此处的项目示例设置了锁紧螺栓2。()

我在控制台中得到以下错误

[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]
在result div中,将显示登录页面。我想改为重定向到登录页面,并在登录后运行方法调用


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

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

Steve,我已经注释掉了forbidden,并将其设置为redirect-//return forbidden(“forbidden”);返回重定向(PlayAuthenticate.getResolver().login());您确定没有限制对登录页的访问吗?我没有限制对登录页的访问。当我执行正常的get请求时,例如:页面被重定向到。在上面的方法中,ajax调用生成一个httppost,它在内部被重定向为httpstatus 303,然后登录页面HTML内容作为数据返回。