我正在使用 play 2.2.x 并且我正在做一个项目。我想在我的 AdminController 类中定义的某些操作(方法)之前检查管理员是否在 session 中。所以如果用户没有登录并尝试输入浏览器中的 adminpage url 他应该被重定向到一个特定的页面,比如 login.scala.html。
我的代码 ( Source )
public F.Promise<SimpleResult> call(Http.Context ctx) throws Throwable {
if (check if user is in session) {
return delegate.call(ctx);
} else {
return redirect(routes.AdminController.login());
}
}
但是上面的代码给我一个不兼容的类型编译错误。
那么如何重定向 url 呢?
如有任何帮助,我们将不胜感激。
最佳答案
redirect
调用不返回 F.Promise
,因此类型错误。您可以使用 pure
包装重定向调用:
public F.Promise<SimpleResult> call(Http.Context ctx) throws Throwable {
if (/* your condition */) {
return delegate.call(ctx);
} else {
return F.Promise.pure(redirect(routes.AdminController.login()));
}
}
关于java - 将请求重定向到 Controller 中的特定操作 public F.Promise<SimpleResult> call(Http.Context ctx){},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27819768/