scala – post方法渲染403 forbidden方法而不是执行post方法代码
发布时间:2020-12-16 09:03:26 所属栏目:安全 来源:网络整理
导读:注意:我是Play Framework的新手 使用这个video tutorial and playlist,我设法创建一个简单的webapp. 问题: 路径文件中的POST方法似乎不执行所需的POST代码. 给定下面的路由文件,浏览到localhost:{port} / user / register请求GET,从而呈现并返回寄存器视
注意:我是Play Framework的新手
使用这个video tutorial and playlist,我设法创建一个简单的webapp. 问题: 路径文件中的POST方法似乎不执行所需的POST代码. 给定下面的路由文件,浏览到localhost:{port} / user / register请求GET,从而呈现并返回寄存器视图. 填写注册视图字段,然后单击提交,刷新页面(通过清除输入字段)并显示预期的“已注册”文本 如果在寄存器视图中将method =“post”添加到表单,则会显示立即403 Forbidden页面页面. 为什么不显示“已注册”文本,我错过了什么(做错了)? 路线文件: GET / controllers.HomeController.index GET /user controllers.LoginController.index() GET /user/login controllers.LoginController.login() POST /user/login controllers.LoginController.doLogin() GET /user/register controllers.LoginController.register() POST /user/register controllers.LoginController.doRegister() # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.versioned(path="/public",file: Asset) 控制器: HomeController LoginController LoginController方法: public Result index() { return ok(views.html.user.index.render(User.getAllUsers())) } public Result login() { return ok(login.render()); } public Result doLogin() { return ok("registered"); } public Result register() { return ok(register.render()); } public Result doRegister() { return ok("registered"); } 注册视图: @() <html> <head> <title>Register new User</title> </head> <body> <h1>Register User</h1> <br> <br> Enter Email Address: <input type="password" name="confirmPassword"> Enter Password: <input type="password" name="confirmPassword"> Confirm Password: <input type="password" name="confirmPassword"> <br> <br> <form action="@routes.LoginController.doRegister()"> <input type="submit" value="Register"/> </form> </body> </html> 控制台输出错误: [warn] p.filters.CSRF - [CSRF] Check failed because no or invalid token found in body [warn] p.filters.CSRF - [CSRF] Check failed with NoTokenInBody 解决方法
我认为你是正确的,你需要定义提交表单数据时使用的HTTP方法(GET或POST).
您可能会看到Forbidden,因为“默认情况下,Play将需要CSRF检查”See here? 将CSRF令牌添加到请求中,如下所示: @import helper._ <form method="post" action="@CSRF(routes.LoginController.doRegister())"> ... 或者在表格的正文中: <form method="post" action="@routes.LoginController.doRegister()"> @CSRF.formField ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |