繁体   English   中英

在MVC中设置授权方式

[英]Set Authorize in MVC post method

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

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

看到这个

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

它不起作用。 如果没有用户登录,则单击发帖回复(调用发帖方法)按钮,进入登录页面(因为用户未登录),然后用户输入uname和psswrd并登录,进入查看讨论页面。 现在调用了HttpGet方法,但我想发布方法调用!

如果更新讨论数据的功能仅是授权用户所允许的功能,那么我将代码添加到视图模型中,并为未授权用户隐藏视图回复按钮。 或以显示替代按钮的方式进行绑定,而不是提交表单,而是显示一条消息,通知用户需要登录才能发表答复。

您的替代方法可能是将表单数据保存在TempData同时TempData用户完成登录过程,但是这在结构上可能是一个混乱的过程。

简而言之,您无法完成您所要求的工作,至少没有很多肮脏的黑客程序就无法做到。

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

您能获得的最接近的结果是以某种方式跟踪它们所处的状态,将它们重定向到一个页面,该页面按原样重新创建表单数据,然后运行一些JavaScript提交该页面。.非常混乱和骇客,很容易中断。

我认为,如果用户未登录,则应强制他们重新输入数据。 另外,您应该设计您的网站,以便用户未经身份验证就无法进入表单页面提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM