Taşıyıcı jetonlarıyla owin kimlik doğrulaması kullanan bir Web api'im var. Kimlik doğrulanırken resim dosyalarını api'den sormak zorunda olan hem web hem de wpf (vb) istemcilerim olacaktır. Resimler, kimliği doğrulanmamış isteklerde iade edilmemelidir.Kimlik doğrulaması yapılırken web api denetleyici eyleminden görüntü döndürme
Şimdiye kadar doğrulanmış olmasa da bir görüntü dönen bir çalışma çözüm vardır:
Benim denetleyicisi C# eylemi:
//[Authorize]
public HttpResponseMessage GetFile()
{
string localFilePath = "C:/Path/ImageOnServerDisk.png";
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(new FileStream(localFilePath, FileMode.Open, FileAccess.Read));
response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = "myImage.png";
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
return response;
}
Ve bu web istemci üzerinde görüntülemek nasıl:
<img src="/api/Secure/GetFile" id="img" />
Bu iyi çalışıyor, ancak tabi ki yukarıdaki eylemde yetki özniteliğini kaldırdığımda, resim dosyası gösterilmiyor ve 401 (Yetkisiz) iletisi aldım. GetFile eylemi için ileti çağrısı alın. Bunun nedeni, GET isteğinde erişim belirtecinin olmamasıdır.
ajax ile GET için jQuery kullanmak olabilir, ama bir img öğesine sonucu nasıl ayarlanacağını bilmiyorum.
Ben de bir img src bir eylem çağrısında http GET isteği için erişim simgesi ayarlayabilir veya jQuery img öğesine görüntü içeriğini ayarlayabilirsiniz nasıl? Ya da tamamen bunu yapmak için daha iyi bir yolu var mı?
şudur: API denetleyicisi için kod aşağıda deneyebilirsiniz * öznitelik. Eylem yöntemim bir ** ApiController ** altında ve denetleyiciye işaret eden
etiketlerini oluşturmaya çalışıyorum, başarısız oluyor. Çünkü doğrulamak için kullanıcı bağlamı yoktur. Herhangi bir fikir? Düşünüyorum ki Aspnet.Mvc eklemem gerekecek ve bir HTTP rotası yerine normal bir rota kaydedeceğim. –
Nexus