2017-05-27 94 views
5

我有一個傳統的ASP.NET webforms應用程序,用戶通過服務器端處理的表單登錄。如果輸入的用戶名+密碼與數據庫中的憑證相匹配,我會在會話中設置一些值(例如當前用戶ID),然後執行Response.Redirect。我還創建了一個HttpCookie,用於「下次訪問」功能時自動重新登錄。將服務器端和客戶端身份驗證與WebAPI結合

目前,我還將WebApi支持添加到該Web應用程序中。我設法實現令牌認證,允許我在客戶端登錄。

如何結合兩種身份驗證方法?我希望用戶輸入一次憑證,在服務器端和客戶端驗證身份後,將用戶重定向到另一個頁面。

+2

能否請您闡述一下你想達到什麼樣的?用戶使用哪種身份驗證方法進行身份驗證,以及與其他方法相關的方式如何?您是否希望用戶通過表單進行身份驗證,然後才能使用基於令牌的webAPI? (另外,自動重新登錄的cookie如何工作?這聽起來像是一個漏洞,但顯然我不知道細節。) –

+0

請參閱https://stackoverflow.com/questions/549/the-definitive-guide-以外形爲主的網站的身份驗證?RQ = 1 – s3raph86

回答

0

下面的代碼將創建一個cookie來保持用戶登錄。

// login etc 
     if (chkRemember.Checked) 
     { 
      // calculate the total number of minutes in 20 days to use as the time out. 
      int timeout = (int)TimeSpan.FromDays(30).TotalMinutes; 

      // create an authentication ticket 
      FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(txtUserName.Text, true, timeout); 

      // Encrypt the ticket 
      string encrptedTicked = FormsAuthentication.Encrypt(ticket); 

      // create the cookie for the ticket, and put the ticket inside 
      HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrptedTicked); 

      // give cookie and ticket same expiration 
      cookie.Expires = ticket.Expiration; 

      // Attach cookie to current response. it will now to the client and then back to the webserver with every request 
      HttpContext.Current.Response.Cookies.Set(cookie); 

      // send the user to the originally requested page. 
      string requestedPage = FormsAuthentication.GetRedirectUrl(txtUserName.Text, false); 
      Response.Redirect(requestedPage, true); 
     } 
     else 
     { 
      // login without saving cookie to client 
      FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false); 
     } 
相關問題