【发布时间】:2026-02-17 22:00:02
【问题描述】:
我在 Home.cshtml 中有这个链接(它的 ActionResult 为 public ActionResult Home())
<li class="home-links home-middleLast">@Html.ActionLink("Log out", "LogOut", "Home")</li>
假设链接到这个控制器
// /LogOut
public ActionResult LogOut()
{
FormsAuthentication.SignOut();
TempData.Clear();
Session.Abandon();
getDB.Close();
return RedirectToAction("Home");
}
我用这个实现了这个
[Route("~/log_out")]
还有这个
routes.MapMvcAttributeRoutes();
我担心有人可以在 URL 中输入 /log_out 并退出帐户。我怎样才能做到让人们不会那样做?
我想这样做,所以您必须单击链接注销,而不是在 URL 中输入 /log_out。
【问题讨论】:
-
您可以使用 AntiForgeryToken 属性来装饰动作,详情请参阅here。但是,这将要求您的注销按钮在表单中。
-
我没有看到任何万无一失的方法来实现这一点。任何人都可以在网络检查器中打开网络选项卡,获取 URL,然后重播。
-
@DanWilson 是否有一个 if 语句可以用来判断按钮是否被点击?
-
当然,您可以将按钮放在表单中,并在单击并发布到
LogOut时设置隐藏输入标志。 -
@maccettura 也许我可以使用发布按钮并确定按钮是否被按下。
标签: c# asp.net asp.net-mvc routing