在Play 2.6.x中的静态内容(即资产)之上添加身份验证/授权层的最简单方法是什么?
假设我们有静态内容,其路由如下:
## auth login page
GET /index
## static (single-path shell) served (assuming login attempt was authenticated)
GET /console controllers.Foo.secureHTML(path="/public/html", file="console.html")
路由控制器方法如下所示:
@Inject
私人资产资产;
public Result secureHTML(String path, String file) {
if(auth()) {
return assets.at(path + "/" + file); <--- return This asset (when authenticated)
} else {
// redirect to Login page...
return unauthorized();
}
}
备注:
1)我们所服务的资产将内部到已部署的.jar
2)我们正在使用Java,但Scala中提出的解决方案也没问题
感谢。
答案 0 :(得分:0)
对于那些寻找答案的人来说,这是我们提出的解决方案:
public class AuthLayer extends Controller {
@Inject
private Environment environment;
private boolean auth() {
// do something smart
// for now....
return true;
}
public Result html(String path, String file) {
if(auth()) {
return ok(environment.getFile(path + "/" + file));
} else {
// redirect to Login page...
return redirect("/path/to/loginForm");
}
}
}