在MVC post方法中设置Authorize

本文关键字:设置 Authorize 方法 MVC post | 更新日期: 2023-09-27 18:12:30

我在mvc创建一个论坛网站。它的相同功能,如堆栈溢出。任何一个查看其他任何讨论,但当任何人把答案在RichBox,必须登录然后创建的答案。

所以我在post action结果方法的顶部使用了[Authorize]

看到这个

[Authorize]
        [HttpPost]
        public ActionResult ViewDiscussion(DiscussionModel discussionModel)
        {
        }

它不工作。如果任何用户没有登录,现在当点击post reply(Call post Method)按钮时,它会进入登录页面(因为用户没有登录),然后用户输入uname和psswrd并登录,它来到了View讨论页面。现在HttpGet方法被调用,但我想post方法调用!

在MVC post方法中设置Authorize

如果更新讨论数据的功能只允许授权用户使用,那么我会在视图模型和视图中添加代码,为未授权用户隐藏帖子回复按钮。或者以这样一种方式呈现一个替代按钮,而不是提交表单,而是显示一条消息,通知用户他们需要登录才能发布回复。

您的替代方案可能是在用户通过登录过程时将表单数据保存在TempData中,但这可能是一个架构混乱的过程。

简单地说,你不能做你想做的事,至少没有很多肮脏的技巧是不行的。

原因很简单。如果用户未获得授权,则框架将其重定向到登录页面进行登录。这会丢失所有的帖子信息。一旦他们登录,您就不能神奇地从服务器发布数据,因为发布必须来自客户端。

你能得到的最接近的是以某种方式跟踪他们的状态,将他们重定向到一个页面,重新创建表单数据,然后运行一些javascript提交页面。很乱,很粗糙,而且很容易坏。

在我看来,如果用户没有登录,那么应该强制他们重新输入他们的数据。或者,您应该设计您的站点,以便用户在未经过身份验证的情况下无法访问表单页面进行提交。