在 Play Framework 2 (Scala) 中加载任意文件

Loading an arbitrary file in the Play Framework 2 (Scala)

我正在尝试使用适用于 Scala 的 Play 2 框架为 AngularJS 应用程序提供服务,我想我大致了解路由和模板的工作原理。

为了提供 angularJS 文件(应该 NOT 公开供用户使用),我目前将它们放在 /public 下然后为他们创建路线。

我想在我的 angular js 文件的位置上有更多的灵活性。我知道 assets.at() 方法为此目的创建了一个动作,但 我无法提供除 /public 以外的任何地方的文件,无论我做什么.如果用户具有正确的权限,我将需要拦截调用并仅提供 javascript 文件。

所以我想我的问题是这是否是我所想的正确方法(angular JS 文件的选择性服务 - 取决于权限等)以及我是否坚持拥有将我的 angularJS 应用程序放在 /public 下 - 是否无法从其他任何地方提供文件?

我想看看什么不适合你。您应该被允许从多个路径提供资产

routes.conf

GET     /assets/*file               controllers.Assets.at(path="/public", file)
GET     /secure/*file               controllers.Assets.at(path="/secure", file)

然后在您的模板中。

<script src="@routes.Assets.at("/public", "test.js")"></script>
<script src="@routes.Assets.at("/secure", "test.js")"></script>

您可以包装内置的 Assets controller. Instead of using the router to invoke it directly, as is the default, invoke your own Action, and use Action composition 以使用您的授权逻辑包装它。