根据播放框架2.3中的当前上下文访问资产文件

时间:2014-09-20 13:59:27

标签: java playframework playframework-2.3

如何根据用户权限返回资产文件。 意味着我想要根据用户访问级别显示页面。

使用此方法时,当前上下文不可用:

public play.api.mvc.Action<AnyContent> index() {
    try {
        if (securityService.getCurrentSession(Controller.ctx()) == null) {
            return Assets.at("/public", "/main.html", false);
        }else
            return Assets.at("/public", "/index/index.html", false);
    } catch (Exception e) {
        return Assets.at("/public", "/index/index.html", false);
    }
}

由于此错误:

There is no HTTP Context available from here.

并使用此方法将资产作为下载文件返回:

public Result index() {
    try {
        if (securityService.getCurrentSession(Controller.ctx()) == null) {
            return Results.ok(Play.application().getFile("/public/index/index.html"));
        }else
            return Results.ok(Play.application().getFile("/public/main.html"));
    } catch (Exception e) {
        return Results.ok(Play.application().getFile("/public/index/index.html"));
    }
}

如何根据用户权限显示索引页?

1 个答案:

答案 0 :(得分:2)

而不是ok(java.io.File)方法,您可以使用ok(java.io.File, boolean),其中第二个参数指定结果为内联或附件。

像这样:

public Result index() {
    try {
        if (securityService.getCurrentSession(Controller.ctx()) == null) {
            return Results.ok(Play.application().getFile("/public/index/index.html"), true);
        } else
            return Results.ok(Play.application().getFile("/public/main.html"), true);
    } catch (Exception e) {
        return Results.ok(Play.application().getFile("/public/index/index.html"), true);
    }
}