簡體   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