我刚刚使用激活器1.3.7迁移到Play 2.4.6。
我有一个安全的控制器来处理表格。表单提交在Chrome中运行良好,但在IE11中,http POST结果是403代码(未授权)。我不明白为什么会这样。这是一个间歇性的问题:连接相同的用户,有时候后期工作,有时它不会。我的应用程序的其他帖子(在其他页面上)工作正常。 有人可以帮忙吗?
我使用动作组合授权和Play提供的自动csrf过滤器,这些过滤器在游戏2.3下完美运行。他们也使用Chrome浏览器中的2.4.6,我按照CSRF configuration 的步骤...因为我的用户群,我需要在IE中使用它。
这是控制器:
@play.mvc.Security.Authenticated(Secured.class)
@Authorize(minLevel=PermissionLevel.VENDOR)
public class SoumRapideFlexible extends Controller {
...
public static Result save(){
Form<SoumFlex> boundForm = soumflexForm.bindFromRequest();
if(boundForm.hasErrors()){
return badRequest(page.render(boundForm));
}
... // else do stuff with the Soumflex object
}
}
这是形式,被剥离到基本:
@(myForm: Form[SoumFlex])
@import helper._
<!DOCTYPE html>
<html>
<head>
<script data-main="@routes.Assets.versioned("javascripts/main_soumflex")"
src="@routes.Assets.versioned("lib/requirejs/require.js")"></script>
</head>
<body>
@form(routes.SoumRapideFlexible.save(), 'class -> "form-horizontal") {
@CSRF.formField
<div class="form-group">
<label class="col-md-2 control-label" for="inputProjet">Projet</label>
<div class="col-md-4">
<input type="text" class="form-control" id="inputProjet" name="inputProjet" placeholder="Nom du projet" required>
</div>
</div>
//... and many other form fields in similar fashion...
<input type="submit" class="btn btn-primary" id="soumettreSoum" value="Save">
</div> <!-- resumeSoum -->
}
</div>
</body>
</html>
好像有时用户凭据丢失或者csrf令牌不正确...任何人都知道为什么我在IE11中有这样的行为?请帮忙。
答案 0 :(得分:0)
首先我使用this implementation of the global CSRF filter,但它给了我上面列出的问题。
然后我尝试this implementation(用csrf替换gzip),问题似乎已经消失了!我认为拥有最后的财产可以解决问题。