[英]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.