2017-05-27 102 views
5

ile birleştirin Kullanıcının, sunucu tarafında işlenen bir form aracılığıyla oturum açtığı eski bir ASP.NET web formları uygulamasına sahibim. Girilen kullanıcı adı + şifresi veritabanındaki kimlik bilgileriyle eşleşiyorsa, oturumlarda bazı değerler (ör. Geçerli kullanıcı kimliği) ayarlıyorum ve daha sonra bir Response.Redirect gerçekleştiriyorum. Ayrıca bir "bir dahaki sefere ziyaret ettiğimde otomatik olarak yeniden başla" işlevi için bir HttpCookie yapıyorum.Sunucu tarafı ve istemci tarafı kimlik doğrulamasını WebAPI

Şu anda, bu web uygulamasına WebApi desteğini de ekliyorum. Müşteri tarafında oturum açmama izin veren jeton kimlik doğrulamayı gerçekleştirmeyi başardım.

Kimlik doğrulama yaklaşımlarını nasıl birleştirebilirim? Kullanıcının kimlik bilgilerini bir kez girmesini, sunucu tarafında ve istemci tarafında doğrulanmasını sağlamasını ve kullanıcıların kimlik doğrulamasından sonra başka bir sayfaya yönlendirmelerini istiyorum.

+2

Eğer elde etmek istediğinizi lütfen ortaya miyim? Kullanıcının bir kez doğrulamak için hangi kimlik doğrulama yöntemini kullanacağı ve bunun diğer yöntemle nasıl bir ilişkisi olduğu? Kullanıcınızın formlarla kimlik doğrulamasını ve ardından belirteç tabanlı webAPI'yi kullanmasını istiyor musunuz? (Ayrıca otomatik relogin için çerez nasıl çalışır? Bu bana bir savunmasız gibi geliyor, ama açıkçası ben ayrıntıları bilmiyorum.) –

+0

Bkz https://stackoverflow.com/questions/549/the-definitive-guide- to-form-based-web-kimlik doğrulama? RQ = 1 – s3raph86

cevap

0

bağlantıyı takip edin.

// 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); 
     }