Bir ASP Web Api 2 arka ucunu çağıran bir web ön uç var. Kimlik doğrulama ASP Kimlik ile yönetilir. Oluşturduğum kontrolörlerin bazıları için, kullanıcıyı aramayı bilmem gerekiyor. Kullanıcının kimliğini dahil etmemek için garip bir model yaratmak istemiyorum (ki bu da müşteride saklamam bile).Web Api çağrısı sırasında kullanıcı içeriği nasıl alınır?
API'ye yapılan tüm çağrılar bir taşıyıcı jetonu kullanılarak yetkilendirilmiştir, benim düşünceme göre denetleyici, kullanıcı bağlamını buna göre belirleyebilmeli, ancak nasıl uygulanacağını bilmiyorum. Aradım ama tam olarak ne aradığımı bilmiyorum ve alakalı bir şey bulamadım. Ben
Ben aşağıda çok umut verici görünüyordu bulundu Güncelleme
public async Task<IHttpActionResult> Post(ApplicationIdentity identity, WalkthroughModel data)
... şey gibi gidiyorum ... ama değer her zaman null! Denetleyicim ApiController'dan miras alır ve bir Authorize üstbilgisine sahiptir.
var userid = User.Identity.GetUserId();
Güncelleme 2
Ben de Get the current user, within an ApiController action, without passing the userID as a parameter ama hiçbiri çalışmalarında tüm çözümleri çalıştılar. Şimdi de değilim nerede olursa olsun geçerli ve auth'd olmakla boş Kimliği
Güncelleme Burada 3
olan bir Kimlik oluyor alıyorum neyi.
[Authorize]
[Route("Email")]
public async Task<IHttpActionResult> Get()
{
var testa = User.Identity.GetType();
var testb = User.Identity.GetUserId();
var testc = User.Identity.AuthenticationType;
var testd = User.Identity.IsAuthenticated;
return Ok();
}
testa = Name: ClaimsIdentity, testb = null, testc = Bearer, testd = true
kullanıcı besbelli kimliği doğrulanır ama onların kullanıcı kimliği alamıyor değilim.
Güncelleme 4
Bir yanıt buldum ama ... Hiçbir db çağrıları olmadan bana adını alır
ClaimsIdentity identity = (ClaimsIdentity)User.Identity;
string username = identity.Claims.First().Value;
onunla gerçekten mutsuz olduğum ama çok janky görünüyor ve Gelecekte destekleyecek bir acı. Daha iyi bir cevabın olsaydı sevinirdi.
Yolda hangi iddiaların yayınlanacağını değiştirmem gerekirse? Ayrıca, kullanıcının kimliğine ihtiyaç duyduğum her an kullanıcı adıma dönüştürmek için bir db çağrısı yapmak zorundayım
talebine kesilirken Yani neden olmasın kullanıcı adı için bir tane ekleyin? Ayrıca, ClaimsIdentity'de kendi uzantı yöntemlerinizi de yapabilirsiniz. – Casey
@emodendroket İyi bir fikir gibi geliyor, ama bunu nasıl yapacağımı bilmiyorum. Üyelik işlerinde oldukça zayıfım, bu yüzden online olarak bulunan şablonlar/eğiticilerden çalışıyorum. Ben açıkça kullanıcı adıyla bir hak talebi yayınlamıyorum ama görünüşe göre bu benim kodumda bir yerde olur: - \ Öneri için teşekkürler Ben –
@emodendroket kapalı çalışacağım Teşekkürler ... benim araştırma göre User.Identity.GetUserId(); * Çalışmalı ve değil! Bunun neden işe yaramadığını ve bu sorunu doğru şekilde çözdüğünü ya da en azından anlayamadığını ve bir çözüm bulmasını istiyorum. –