在我的ASP.Net MVC网站上,无论何时用户注册,管理员都应激活他/她的帐户。在我看来,我正在为此创建简单的链接:
@Html.ActionLink("activate", "user", new { id = item.ID })"
我通常会向控制器创建一个带有@Html.AntiForgeryToken()
和POST
的表单。但是,我认为可以通过HTTP GET执行此操作,因为我们正在为admin
角色的用户执行此操作。我应该使用POST方法还是继续使用HTTP GET而只是id
字段?
答案 0 :(得分:1)
我认为可以通过HTTP GET执行此操作,因为我们正在为管理员角色的用户执行此操作。
不。如果有人将/user/activate/42
的链接发送给您的管理员并点击了该链接,则他只是激活了一位用户。
除了安全性之外,请阅读When should I use GET or POST method? What's the difference between them?以了解对HTTP级别的影响,这也涉及浏览器实现(缓存,重新发布警告以及列表继续)。
答案 1 :(得分:1)
GET请求永远不应该改变系统的状态。它应该保持系统不变。您不希望任何人通过发出GET请求来批准用户,因为它会使系统受到攻击。 GET请求也不应该用于传递数据。
您应该理想地使用PUT请求。如果您不能使用PUT,那么POST就可以了。