簡體   English   中英

在 controller 中添加 [Authorize] 導致錯誤 401.0

[英]Adding [Authorize] in controller resulted in Error 401.0

我正在做一個簡單的用戶注冊 web 項目。 每當我在 controller 中添加 [Authorize] 並隨后從中創建視圖時,當我運行代碼時,它會產生 HTTPS 401.0 未經授權的錯誤。 如果我刪除它,它會運行,但不會產生我想要的結果。

在我的Account Controller中,我有這個:

        [HttpPost]
        public ActionResult SignUp(UserSignUpView USV)
        {
            if (ModelState.IsValid)
            {
                UserManager UM = new UserManager();
                if (!UM.IsLoginNameExist(USV.LoginName))
                {
                    UM.AddUserAccount(USV);
                    FormsAuthentication.SetAuthCookie(USV.FirstName, false);
                    return RedirectToAction("Welcome", "Home");

                }
                else ModelState.AddModelError("", "Login Name already taken.");
            }
            return View();
        }

在我的Home controller 中,我有這個:


namespace MVC5FileRealWorld.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }

        [Authorize]
        public ActionResult Welcome()
        {
            return View();
        }
    }
}

我通過右鍵單擊Welcome()添加視圖創建了一個視圖

下面是我的Welcome class:

@{
    ViewBag.Title = "Welcome";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Hi <b>@Context.User.Identity.Name</b>! Welcome to my first MVC 5 Web App!</h2>

用戶注冊成功后(即數據成功存入數據庫),

它應該顯示“嗨 XXX! 歡迎來到我的第一個 MVC5 Web 應用程序!

但是現在如果我添加 [Authorize] 並生成一個視圖,那么它只會顯示 HTTP 401.0 錯誤。 如果我刪除 [Authorize] 並重新生成另一個視圖(與前一個視圖相同的名稱),它將只顯示“嗨。 歡迎來到我的第一個 MVC5 Web 應用程序!'。 這行代碼@Context.User.Identity.Name似乎也不適用於后一種情況。

如果您在嘗試訪問“受保護”資源時未獲得授權,則會收到 401。

如果您未獲得授權: @Context.User.Identity.Name將返回一個空字符串。

到目前為止,這就是你所經歷的。

您顯示“SignUp”的代碼,它創建一個身份驗證 cookie,它應該授權用戶。 旁邊; 您應該有一個用戶可以登錄的“登錄”表單。


因此,使用現有用戶登錄,或使用新用戶注冊。 如果 cookie 仍然存在,您將獲得授權。


如果這不起作用; 很可能您的授權/身份驗證管道設置不正確。


作為最后的手段,您可以嘗試:

 FormsAuthentication.SetAuthCookie(USV.FirstName, true);

或者您可能需要檢查您的web.config

 <authentication mode="Forms"> <forms loginUrl="..." cookieless="UseCookies" /> </authentication> <!-- more stuff --> <modules> <!-- removed module --> <!--<remove name="FormsAuthenticationModule" />--> </modules>

請參閱: FormsAuthentication.SetAuthCookie 在 MVC 5 中不 [Authorize]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM