首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Deadbolt玩java项目,拥有私人资产

使用Deadbolt玩java项目,拥有私人资产
EN

Stack Overflow用户
提问于 2015-01-12 11:59:43
回答 1查看 287关注 0票数 0

我一直在寻找如何配置一个资产文件夹的示例,通过@routes.Assets符号访问该文件夹,但只有在用户通过身份验证时才返回该资产。

我已经配置了死螺栓,并且使用了google帐户,应用程序也能正常工作,但不幸的是,当我使用浏览器并为应用程序部分使用的Javascript资产写下直接URL时,它允许我毫无问题地下载它们。

因此,总体问题是:是否有一种方法可以配置只能在用户通过身份验证时才能访问的资产文件夹?

非常感谢

Edit1 :我现在所做的方式是创建一个名为PrivateAssets的控制器,其中有一个名为"at“的方法,它接受字符串路径和字符串文件参数。该方法被@SubjectPresent注释,在这里,我将获取文件并返回它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-15 16:07:58

我是怎么做到的:

创建一个扩展PrivateAssetsAssetsBuilder,如下所示:

代码语言:javascript
复制
public class PrivateAssets extends AssetsBuilder {

    private final static Logger logger = LoggerFactory.getLogger(PrivateAssets.class);

    private static User getLocalUser(final Http.Session session) {
        final AuthUser currentAuthUser = PlayAuthenticate.getUser(session);
        final User localUser = User.findByAuthUserIdentity(currentAuthUser);
        return localUser;
    }

    private static Http.Session session() { return Http.Context.current().session(); }

    private static Http.Request request() { return Http.Context.current().request(); }

    private static Http.Response response() { return Http.Context.current().response();}

    @SubjectPresent
    public static Result at(String path , String file) {
        logger.debug(getLocalUser(session()).email + " -> secure asset call : " + path + " | " + file);
        return Results.ok(Play.application().getFile(path + File.separator + file), true);
    }
}

我还以这样的方式修改了我的路由文件:

代码语言:javascript
复制
GET         /assets/*file                                controllers.Assets.at(path="/public/public", file)
GET         /secure/assets/*file                         controllers.PrivateAssets.at(path="/public/private", file)

我的public文件夹现在有另外两个文件夹:

代码语言:javascript
复制
- public
- private

在公众内部,我拥有任何人都能接触到的所有资产结构。

在私有内部,我拥有所有只有经过身份验证才能访问的资产结构。

为了获得任何私人资产,我做了这样的事情:

代码语言:javascript
复制
<script src="@routes.PrivateAssets.at("private.min.js")"></script>

还有其他选项,如2.3迁移指南中描述的修改build.sbt文件以添加另一个资产文件夹,以便为每种类型的资产有两个不同的文件夹。这给了我更多的问题,特别是在测试的时候。

希望这对其他需要这类东西的人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27901483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档