2014-03-25 65 views
1

的下面下面是我想如何配置安全配置文件爲我的Play應用程序–在auth.securityProfiles每個條目由一個Operation => Roles雙整體配置部分:遊戲框架:如何閱讀由未知鍵

auth { 
    securityProfiles { 
     myOperation1 = "author, auditor" 
     myOperation2 = "admin" 
     myOperationN = "auditor, default" 
    } 
} 

如何閱讀第auth.securityProfiles部分中的所有條目以生成此類Map

val securityProfiles = Map(
    "myOperation1" -> "author, auditor", 
    "myOperation2" -> "admin", 
    "myOperationN" -> "auditor, default" 
) 

謝謝。

+0

您是否嘗試過[this](https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/Configuration.scala?source=cc #L258),然後將配置轉換爲映射? –

回答

0

這裏是我的解決方案...我只是修改這樣的配置...

auth { 
    securityProfiles = [ 
     { 
      operation = "myOperation1" 
      roles = ["author", "auditor"] 
     } 
     { 
      operation = "myOperation2" 
      roles = ["admin"] 
     } 
     { 
      operation = "myOperationN" 
      roles = ["auditor", "default"] 
     } 
    ] 
} 

...然後用下面的代碼剪斷閱讀:

import scala.collection.mutable.Map 

var securityProfiles = Map[String, List[String]]().withDefaultValue(List.empty) 
    configuration.getConfigList("auth.securityProfiles").map { _.toList.map { config => 
    config.getString("operation").map { op => 
     securityProfiles += (op -> config.getStringList("roles").map(_.toList).getOrElse(List.empty)) 
    } 
}} 

我希望有所幫助。