SORU
22 Kasım 2013, Cuma


OWİN: izinsiz webapi Ara giriş sayfası döndürmek yerine 401

Nasıl webapi bir yöntem jilet gibi bir görünüm aradı onun yetkisiz zaman loginpage dönüş yok ki mvc/webapi projem yapılandırabilirim?

Ayrıca javascript üzerinden aramalar için WebApi denetleyicileri olan bir MVC5 uygulanması.

İki yöntem aşağıda

[Route("api/home/LatestProblems")]      
[HttpGet()]
public List<vmLatestProblems> LatestProblems()
{
    // Something here
}

[Route("api/home/myLatestProblems")]
[HttpGet()]
[Authorize(Roles = "Member")]
public List<vmLatestProblems> mylatestproblems()
{
   // Something there
}

aşağıdaki açısal kodu) denir:

angular.module('appWorship').controller('latest', 
    ['$scope', '$http', function ($scope,$http) {         
        var urlBase = baseurl   '/api/home/LatestProblems';
        $http.get(urlBase).success(function (data) {
            $scope.data = data;
        }).error(function (data) {
            console.log(data);
        });
        $http.get(baseurl   '/api/home/mylatestproblems')
          .success(function (data) {
            $scope.data2 = data;
        }).error(function (data) {
            console.log(data);
        });  
    }]
);

Açmış değilim ve ilk yöntem başarılı bir şekilde veri döndürür. İkinci yöntem (başarı işlevi) giriş sayfasına eşdeğer içeren veri döndürür. eğer denetleyici bir eylem talep edilmesi halinde mvc almak istiyorsunuz ne yani damgalı [Yetki] ve giriş değildin.

Kullanıcı eğer giriş ya göre, farklı veri görüntüleme o bir 401 yetkisiz dönmek istiyorum. Eğer kullanıcı giriş yapmış ise ideal veri Üyesi için özel iade edebilirim o yüzden kumandanın Kullanıcı özelliği erişmek mümkün olmak istiyorum.

Artık çalışmıyor gibi görünüyor aşağıda öneriler (Kimlik veya WebAPİ değişiklik) ive hiçbiri sorunu göstermek gerekir github ham bir örnek oluşturduk. GÜNCELLEME:

CEVAP
22 Kasım 2013, Cuma


Brock Allen Tanımlama bilgisi kimlik doğrulaması ve OWİN kullanırken ajax aramalar için 401 dönmek ne kadar güzel bir blog yazısı var. http://brockallen.com/2013/10/27/using-cookie-authentication-middleware-with-web-api-and-401-response-codes/

Başlangıç ConfigureAuth yöntemi.Auth.cs dosyası:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
  AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
  LoginPath = new PathString("/Account/Login"),
  Provider = new CookieAuthenticationProvider
  {
    OnApplyRedirect = ctx =>
    {
      if (!IsAjaxRequest(ctx.Request))
      {
        ctx.Response.Redirect(ctx.RedirectUri);
      }
    }
  }
});

private static bool IsAjaxRequest(IOwinRequest request)
{
  IReadableStringCollection query = request.Query;
  if ((query != null) && (query["X-Requested-With"] == "XMLHttpRequest"))
  {
     return true;
  }
  IHeaderDictionary headers = request.Headers;
  return ((headers != null) && (headers["X-Requested-With"] == "XMLHttpRequest"));
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrey Menshikov

    Andrey Mensh

    28 Ocak 2012
  • Boiler Room

    Boiler Room

    10 Mayıs 2012
  • Le Cargo !

    Le Cargo !

    24 HAZİRAN 2007