2016-04-10 18 views
0

Azure'a konuşlandırdıktan sonra harici oturum açma sağlayıcılarıyla sorun yaşıyorum, harici sağlayıcılarla (google ve facebook) kimlik doğrulaması yapabilirdim ancak kullanıcı kaydolmak için tıkladığında hata.asp.net mvc Azure'da OAuth dış oturum açma hatası (localhost tamam)

Bu eğiticiyi 'üyelik API'sini kullanma ve' canEdit 'rolünü ekleme konusunda uyguluyordum. Üyelik API kullanarak

Bu localhost iyi çalıştı ama başarılı Google ya da FB için doğrular ve ExternalLoginConfirmation.cshtml alır ve kullanıcı kayıt basın sağlar Azure için dağıtmak, bunun ardından bir görüntüler https://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-deploy-aspnet-mvc-app-membership-oauth-sql-database/

"Hatanız işlenirken bir hata oluştu."

DB'deki Azure ASPNetUsers Tablosuna bağlanabilirim ve kullanıcının oluşturmuş olabileceğini, kullanıcının giriş yapıp siteye girebildiğini söyleyebilirim. Ancak, kullanıcı 'canEdit' rolüne eklenmemiş, bu nedenle onay sırasında kısmen tamamlanmış veya başarısız görünüyor. Bunun neden localhost üzerinde çalıştığını anlamıyorum, ancak Azure değil, Azure'a da yeni bir dağıtım kurdum. Hata, ExternalLoginConfirmation için Accountcontroller yönteminde olabilir mi? Hata, kullanıcıyı 'canEdit' rolüne eklerken yerelhost'ta değil yalnızca Azure'da eklerken ortaya çıkıyor.

// POST: /Account/ExternalLoginConfirmation 
    [HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) 
    { 
     if (User.Identity.IsAuthenticated) 
     { 
      return RedirectToAction("Index", "Manage"); 
     } 

     if (ModelState.IsValid) 
     { 
      // Get the information about the user from the external login provider 
      var info = await AuthenticationManager.GetExternalLoginInfoAsync(); 
      if (info == null) 
      { 
       return View("ExternalLoginFailure"); 
      } 
      var user = new ApplicationUser { 
       UserName = model.DisplayName, 
       Email = model.Email, 
       OAuthName = model.OAuthName, 
       DisplayName = model.DisplayName, 
       ForceID = model.ForceID, 
       NeighID = model.NeighID, 
       MyLatLng = model.MyLatLng 
      }; 
      var result = await UserManager.CreateAsync(user); 
      if (result.Succeeded) 
      { 
       result = await UserManager.AddLoginAsync(user.Id, info.Login); 
       if (result.Succeeded) 
       { 
        await UserManager.AddToRoleAsync(user.Id, "canEdit"); 
        await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); 
        return RedirectToLocal(returnUrl); 
       } 
      } 
      AddErrors(result); 
     } 

     ViewBag.ReturnUrl = returnUrl; 
     return View(model); 
    } 

Herhangi biri basit hata ayıklama adımları önerebilir mi? Bir hata günlüğünü görmenin bir yolu var mı? (Bu konuda yeni olduğum için özür dilerim - rehberlik takdir edildi).

+0

Anlamadım. Problemin sadece Azure ile mi? Ardından "... (google ve facebook)" deyin, ancak kullanıcı kaydolmak için tıkladığında bir hata mesajı alırsınız. " . İlk olarak probleminizi tanımlamanızı öneriyorum. – ozgur

+0

Merhaba Özgür, evet sorun sadece Azure'da. Localhost'ta her şey düzgün çalışıyor, kullanıcı hem OAuth sağlayıcıları tarafından doğrulanıyor ve Aspnetusers tablosuna başarılı bir şekilde giriliyor, kullanıcı ayrıca yeni 'CanEdit' rolüne sahip. Azure üzerindeyim, konuyu görüyorum, kullanıcı FB & Google tarafından doğrulanıyor, register'a basıldığında ExternalLoginConfirmation sayfasına geçiyor hata görüntüleniyor. Kullanıcı oturum açmayı tıklayabilir ve Azure DB'nin incelenmesi üzerine, kullanıcı Aspnetuser tablosundadır, ancak yeni 'canedit' rolüne sahip değildir. Yeni bir proje dahil, iki kez Azure'a konuşlandırdım. –

+0

Ben kullanıcıları doğrulamak için OAuth2.0 sağlayıcıları olarak Google & Facebook'ım. –

cevap

0

Azure Veritabanını inceledikten sonra yeni rolün 'AspNetRoles' tablosunda bulunmadığını buldum, bu nedenle kullanıcıyı 'AspNetUsers' tablosuna ekliyor ancak rolü ayırmaya çalışırken hata veriyordu.

Benzer bir sorunu olan herkes için, kontrol edilecek 3 tablo vardır;

AspNetRoles - check all 'roles' are present 
AspNetUsers - check all 'users' are present 
AspNetUserRoles - check user and associated roles 

Benim hata ben 'Yürütme Kod İlk Göçler' seçilerek değildi 'Publish Web Sihirbazı' ayarlar sekmesinde, Uygulamayı yayınlıyordu şekilde oldu.

İlgili konular