2015-01-29 27 views
12

Görsel stüdyo 2013'te asp.net MVC SPA şablonuyla oynamaya çalışıyorum, kimlik doğrulama bitlerine ihtiyacım yok, sadece doğrudan üzerine yüklemem gerekiyor kontrolör sayfalarından biri.ASP.net MVC tek sayfa uygulamasında kimlik doğrulamasını kaldır

İlk şablondan tüm kimlik doğrulama işlemlerinden nasıl kurtulurum?

+0

web.config dosyasında olarak kabul ettiniz mi? burada: https://msdn.microsoft.com/en-us/library/aa291347(v=vs.71).aspx – ibininja

+0

Giriş noktasını istediğim görünüme nasıl ayarlayabilirim? – colobusgem

+0

Bu http: // stackoverflow'u deneyin.com/questions/1333002/nasıl-set-in-başlangıç-sayfa-için-debugging-in-bir-as-net-mvc-uygulama, ya da maproute bakabiliriz (Yanılmıyorsa, bir en son VC/MVC kullanıyorum beri – ibininja

cevap

17

HomeController den [Authorize] ek açıklama çıkarın ve bu kaldırma:

@section Scripts{ 
    @Scripts.Render("~/bundles/knockout") 
    @Scripts.Render("~/bundles/app") 
} 

Views\Home\Index.cshtml dan dolayı biri js bile HomeController den [Authorize] ek açıklama çıkardıktan sonra oturum açma sayfasına yönlendirme neden olduğunu ve muhtemelen değil mi yapar ona ihtiyacı olmak. Sayfanızda bu komut dosyalarına ihtiyacınız varsa, bunlardan birini düzenlemeniz gerekir.

0

Denetleyicilerden [Authorize] kaldırmaya ek olarak, home.viewmodel.js dosyası, ana sayfa yüklenmesinde yönlendirme sorununa neden oluyor. App_Start/BundleConfig.cs'da ~/Scripts/app/home.viewmodel.js satırını bundles/app ScriptBundle'dan kaldırın.

+0

neden yetkilendirmeyi tetikliyor? –

7

İşte yaptığım şey.

Ev denetleyicisinden [Authorize] özniteliğini kaldırın.

self[options.bindingMemberName] = ko.computed(function() { 
    if (!dataModel.getAccessToken()) { 
     // The following code looks for a fragment in the URL to get the access token which will be 
     // used to call the protected Web API resource 
     var fragment = common.getFragment(); 

     if (fragment.access_token) { 
      // returning with access token, restore old hash, or at least hide token 
      window.location.hash = fragment.state || ''; 
      dataModel.setAccessToken(fragment.access_token); 
     } else { 
      // no token - so bounce to Authorize endpoint in AccountController to sign in or register 
      window.location = "/Account/Authorize?client_id=web&response_type=token&state=" + encodeURIComponent(window.location.hash); 
     } 
    } 

    return self.Views[options.name]; 
}); 

Bu giriş ekranına yönlendirileceksiniz bölüm, bu yüzden dışarı veya if bloğu kaldırmak:

Sonra app.viewmodel.js içinde bunu göreceksiniz. İsterseniz app.datamodel.js'a gidebilir ve self.getAccessToken'u kaldırabilir veya yorum yapabilirsiniz.

// Web API configuration and services 
// Configure Web API to use only bearer token authentication. 
config.SuppressDefaultHostAuthentication(); 
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 
0

Eğer anonim erişime izin vermek istediğiniz işlevi başında [AllowAnonymous] koyun: muhtemelen/kaldırmak aşağıdaki satırları isteyeceksiniz WebApiConfig.cs yılında ek olarak

.

2

İşte bunu nasıl çözdüm. Ben sadece

kaldırıldı [Authorize] ekini HomeController.cs (Castro Roy'un yanıtından aldım) 'dan kaldırıldı. Bundan sonra bile, uygulama giriş sayfasına yönlendirildi.

yönlendirme AccountController.cs

bu diğer sayfalarda kullanılabilir böylece kimlik doğrulama ile ilgili kod korumuşlardır Ancak

den [Yetkilendirme] ek açıklamayı kaldırmak gidermek için.

İlgili konular