用户或黑客是否可以使用应用程序外部的某些工具调用POST操作方法

joh*_* Gu 0 asp.net entity-framework asp.net-mvc-3

我正在阅读微软网站上有关如何显示或隐藏对象的"注册"链接的示例,具体取决于当前用户是否已注册.只有当前用户尚未注册时,他们才会将以下代码添加到视图中以显示"注册"链接: -

<div id=”rsvpmsg”>
<% if (Request.IsAuthenticated) { %>
<% if (Model.IsUserRegistered(Context.User.Identity.Name)) { %>
<p>You are registered for this event!</p>
<% } else { %>
<%: Ajax.ActionLink( “RSVP for this event”,
“Register”, “RSVP”,
new { id=Model.DinnerID },
new AjaxOptions { UpdateTargetId=”rsvpmsg” }) %>
Run Code Online (Sandbox Code Playgroud)

然后在注册动作方法上,他们也执行相同的检查以检查用户是否已经注册,如下: -

    [Authorize, HttpPost]
    public ActionResult Register(int id) {
    Dinner dinner = dinnerRepository.GetDinner(id);
    if (!dinner.IsUserRegistered(User.Identity.Name)) {
    RSVP rsvp = new 

RSVP();
// .....
Run Code Online (Sandbox Code Playgroud)

所以我的问题是为什么他们再次对Post动作方法执行相同的检查,,,用户是否有机会调用POST注册动作方法,而不是单击如果用户已经不会显示的注册链接注册?...所以为什么不考虑

 if (!dinner.IsUserRegistered(User.Identity.Name)) 
Run Code Online (Sandbox Code Playgroud)

检查动作方法是否必要?BR

SLa*_*aks 5

是的,这显然是可能的,而且非常简单.