小编Mar*_*k S的帖子

Playframework安全模块:您如何"登录"以测试FunctionalTest中的安全控制器?

编辑:我正在使用Play!1.2版(生产版)

我想测试由安全模块类保护的控制器操作,因此我需要在测试我的控制器之前登录(否则我将被重定向到登录页面).

我在调用安全操作之前尝试登录.这是我的FunctionalTest的样子:

@Test
public void someTestOfASecuredAction() {
    Map<String, String> loginUserParams = new HashMap<String, String>(); 
    loginUserParams.put("username", "admin"); 
    loginUserParams.put("password", "admin");

    // Login here so the following request will be authenticated:
    Response response = POST("/login", loginUserParams);

    // The following is an action that requires an authenticated user:
    Map<String, String> params;
    params.put("someparam", "somevalue");
    response = POST("/some/secured/action", params);

    assertIsOk(response); // this always fails because it is a 302 redirecting to /login
}
Run Code Online (Sandbox Code Playgroud)

单步执行代码,我已经验证登录帖子是否有效 - 它会导致重定向响应,并将位置设置为主页(表示登录成功).

但随后在随后的安全行动调用中,我总是被重定向到"/ login"页面 - 表明我之前的登录没有坚持第二个POST请求.

查看FunctionalTest的源代码,我看到有一个@Before拦截器可以清除所有cookie.我尝试在我自己的中间超类中覆盖此截取(以保留cookie),但这也不起作用.

编辑:我把play.mvc.Before拦截器与org.junit.Before混淆了 - …

playframework

17
推荐指数
1
解决办法
4815
查看次数

如何转义 gettext .po 文件中的美元符号?

这是我在这里问的第一个问题,所以请友善......

在我的 PO 文件中,我有一个包含美元符号的本地化字符串。我无法逃脱美元符号(以避免 gettext 尝试美元替代)并获得所需的结果。一个 PO 条目示例来阐明我想要做什么:

msgid "myStringId"
msgstr "My string that contains a $ sign"

gettext 在 msgtr 中的 $ 上抛出。我尝试使用以下方法进行转义:

msgstr "My string that contains a \$ sign"
msgstr "My string that contains a $$ sign"
msgstr "My string that contains a '$' sign"

...没有成功。第三种方法(单引号)最接近,但返回美元符号单引号。

返回 =>My string that contains a '$' sign
所需 =>My string that contains a $ sign

我的问题又来了:如何在 gettext PO 条目中转义美元符号?

提前致谢。

gettext

5
推荐指数
1
解决办法
1283
查看次数

为什么sbt抛出"value enablePlugins不是sbt.Project的成员"异常?

我正在尝试使用SBT版本0.13.5在项目中启用自定义AutoPlugin.当我尝试在我的build.sbt通道中启用插件时:

val aProject = project.in(file("foo")).enablePlugins(MyAutoPlugin)
Run Code Online (Sandbox Code Playgroud)

尝试从命令行启动SBT时出现以下错误:

value enablePlugins is not a member of sbt.Project
... (big stack trace) ...
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?
Run Code Online (Sandbox Code Playgroud)

当我查看sbt.Project的源代码时,我看到它enablePlugins 已定义.这里发生了什么?

编辑:当我删除调用时,enablePlugins我可以成功启动SBT会话.运行> about确认SBT版本为0.13.5.

编辑3:我发现当我使用格式为"2014.06.26-1-SNAPSHOT"的版本向Sonatype发布插件时,SBT无法加载上述错误.但是,如果我将格式更改为在"-1"之后包含单个字母,则SBT加载.因此这个版本格式有效:"2014.06.26-1a-SNAPSHOT".我发现这是因为我发现解析到本地发布的插件似乎工作正常(除了一个从未工作过的插件),而解析发布到Sonatype的完全相同的插件导致错误.当我在本地发布时,我总是在该版本中添加一封信.

编辑2:SBT日志的完整输出:

[info] Loading global plugins from /Users/markschaake/.sbt/0.13/plugins
[debug] 
[debug] Initial source changes: 
[debug]     removed:Set()
[debug]     added: Set()
[debug]     modified: Set()
[debug] Removed products: Set() …
Run Code Online (Sandbox Code Playgroud)

sbt

5
推荐指数
1
解决办法
4628
查看次数

标签 统计

gettext ×1

playframework ×1

sbt ×1