Play中静态内容的身份验证(2)

时间:2017-11-24 18:55:05

标签: java playframework

在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中提出的解决方案也没问题

感谢。

1 个答案:

答案 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");
      }
   }
}