簡體   English   中英

AngularJS和Web API表單身份驗證

[英]AngularJS and Web API form authentication

我是AngularJS的新手,我開始創建一個示例應用程序,這個應用程序有2個視圖:

  • 登錄視圖
  • 歡迎觀看

我的AngularJS虛擬應用程序一切正常,但現在我開始在服務器端實現登錄功能:

[HttpPost]
        public JsonResult Login(string credentials)
        {
            bool returnVal = false;

            if (!string.IsNullOrEmpty(credentials))
            {
                FormsAuthentication.SetAuthCookie("DUMMY USER", true);
            }

            return Json(new
            {
                success = returnVal
            },
            JsonRequestBehavior.AllowGet);
        }

在歡迎控制器上,我有:

 [Authorize]
        public JsonResult GetPersons()
        {
            return Json(new
            {
                success = false
            },
             JsonRequestBehavior.AllowGet);
        }

然后為了實現表單身份驗證,我必須在Web.Config中設置:

<authentication mode="Forms">
      <forms loginUrl="/login" name=".ASPXFORMSAUTH" protection="All" timeout="1" slidingExpiration="true" />-->
    </authentication>

問題是,當這樣做時,它將重定向URL,因此我收到以下錯誤:

GET http://localhost:21871/login?ReturnUrl=%2fperson%2fGetPersons 404 (Not Found) 

而且因為AngularJS無法理解那條路線,所以我無法繼續前進。

有關如何解決這個問題的任何線索,或者有更好的方法來解決這個問題。

謝謝

您可以使用任何您喜歡的身份驗證/授權機制。 但是當你調用$http.get()$http.post()你希望收到一個JSON對象。 但是,如果您未經過身份驗證,則會被重定向到登錄頁面,這是一個HTML頁面。 因此,檢查成功的代碼將失敗。

您需要創建一個新的自定義授權過濾器(如MyAuthorize),通過任何可用的技術(SimpleMembership,OAuth等)對您的用戶進行身份驗證/授權,如果身份驗證失敗,則返回帶有Error標志的JSON對象,而不是返回RedirectResult 然后,您可以在每個$http.get()$http.post()之后檢查該標志,並從客戶端重定向用戶。 我們總是開發自己的通信服務,調用$http.get()$http.post並始終在那里進行檢查。

暫無
暫無

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

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