2017-05-27 15 views
5

サーバー側で処理されるフォームを使用してユーザーがログインする従来のASP.NET Webフォームアプリケーションがあります。入力されたユーザー名+パスワードがデータベースの資格情報と一致する場合、セッション(たとえば、現在のユーザーID)にいくつかの値を設定してから、Response.Redirectを実行します。また、次回訪問時に自動的にrelog me機能を使用するためのHttpCookieを作成しています。WebAPIを使用してサーバー側とクライアント側の認証を結合する

現在、WebアプリケーションにWebApiサポートを追加しています。私はクライアント側でログインできるトークン認証を実装することができました。

どのように両方の認証方法を組み合わせることができますか?私は、一度彼の資格情報を入力し、サーバー側で認証され、クライアント側で認証後にユーザーを別のページにリダイレクトしたいと思っています。

+2

あなたが達成したいのかについて詳しく説明していただけますか?ユーザーが一度認証するために使用する認証方法と、それが他の方法にどのように関係していますか?あなたのユーザーはフォーム経由で認証し、トークンベースのWebAPIを使用できるようにしますか? (また、自動リコインのクッキーはどうですか?それは私の脆弱性のようですが、明らかに詳細はわかりません) –

+0

https://stackoverflow.com/questions/549/the-definitive-guide- to-form-b​​ased-website-authentication?rq = 1 – s3raph86

答えて

0

リンク、次の訪問。

// 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); 
     } 
関連する問題