1

我在 mvc 中创建了一个论坛网站。它的功能与 Stack Overflow 相同。任何人查看其他任何讨论,但是当任何人将答案放入 RichBox 时,必须登录然后创建答案。

所以我[Authorize]在我的后期操作结果方法的顶部使用

看到这个

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

它不工作。如果有用户没有登录,现在点击post reply(Call Post Method)按钮,进入登录页面(因为用户没有登录),然后用户输入uname和psswrd并登录,就到了查看讨论页面。现在调用了 HttpGet 方法,但我想发布方法调用!

4

2 回答 2

0

如果更新讨论数据的功能是仅授权用户允许的功能,我将向视图模型和视图添加代码以隐藏未经授权用户的发布回复按钮。或者以呈现替代按钮的方式对其进行装配,而不是提交表单,而是显示一条消息,通知用户他们需要登录才能发布回复。

您的替代方案可能是在TempData用户通过登录过程提供信息时保存表单数据,但这可能是一个体系结构混乱的过程。

于 2013-05-08T08:18:16.930 回答
0

简单地说,你不能做你所要求的,至少不能没有很多肮脏的黑客。

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

你能得到的最接近的方法是以某种方式跟踪他们所处的状态,将他们重定向到一个重新创建表单数据的页面,然后运行一些 javascript 来提交页面.. 非常混乱和 hackish,它很容易中断。

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

于 2013-05-08T09:18:24.803 回答