none
UserId ye ulaşma RRS feed

  • Genel Tartışma

  • Arkadaşlar merhaba

    MVC projesinde owin auth kullanıyorum ama Business katmanında bir class içinde UserId ye ihtiyacım var. 

    HttpContext.Current.User.Identity.GetUserId();

    ile il çalıştırmada Id yi alabiliyorum ama sayfada post işlemi veya yenileme yaptığımda UserId null dönmekte. Id yi nasıl global yapabilirim ?

    şimdiden cevap veren herkese teşekkürler

    18 Eylül 2016 Pazar 02:57

Tüm Yanıtlar

  • User id i çağırıyorsunuz geliyor onda bir sorun yok.

    Sorun id in null dönmesinde

    Bunun sebebi userid'da değerin olmaması veya yanlış tanımlanmış olması.

    Global Class'da id olduğu için örnek: int UserID = 0; vererek hem global class da tanılamış ve değerini başta sıfır vermiş oluruz.

    Sizden ricam diğer kodları da paylşamanız bu sayede daha uygun bir şekilde hallederiz.

    19 Eylül 2016 Pazartesi 07:25
  • Merhaba

    Sorun tam olarak öyle değil. İlk olarak login olduğumda HttpContext dolu olarak gelmekte ama sayfayı yenilediğimde (aynı user login durumda logoff olmadım ve user ID db de durduğuna göre) HttpContext null geliyor. Bu işlemi yaptığım class içinde HttpContext i boşaltacak birşeyde yapmıyorum. MVC ile gelen login mekanizmasını kullanıyorum BLL katmanında UserId her an kullanmam gereken bir filtrem var, buraya login olan user'ın id sini verme gerekiyor.

    Kodlarım aslında şuan sadece MVC in kendi hali BLL katmanında, class içindeki sql cümleciğinden ibaret ;

    Guid userId =  HttpContext.Current.User.Identity.GetUserId();
    SELECT * FROM dbo.PoolsInfo WHERE UID = userId

    bu kodların olduğu method List<Pool> tipinde dataları dönmekte (userId dolu olduğu sürece de gelmekte) PoolControlle'ın index actionda bu listi alıp gride basıyorum



    • Düzenleyen Escuridao 19 Eylül 2016 Pazartesi 19:43
    19 Eylül 2016 Pazartesi 17:17
  • Bunun olması mümkün değil. Sonuçta eğer siz bu kütüphaneye erişebiliyorsanız HttpContext de sizinle birliktedir. Belki yöntemsel bir hata vardır. İlk seferde gelip başka bir seferde gelmemesi bana hata gibi gelmedi başka bir şey vardır.

    Gelelim işin aslına BLL neden kafasına göre HttpContext e erişiyor ki? Siz BLL neden yaptınız ki amaç zaten application katmanı ile bussiness logic katmanını ayırmak değil mi? Bu durumda static HttpContext.Current kullanmanız da yanlış bir yaklaşım. BLL katmanınızda classları oluştururken veya fonksiyonları çağırırken vermeniz gereken parametreleri application katmanından vermelisiniz httpcontext okutmamalısınız. Bu zaten yanlış bir yaklaşım olur. Eğer her şeyi yerinde yaparsanız zaten yukarıda ki gibi neden erişemiyorum demenize gerek kalmaz.


    Fullstack Developer

    20 Eylül 2016 Salı 05:00
  • Merhaba

    Öncelikle cevabınız için teşekkürler. httpcontext sanırım ilk login işleminde yani post durumunda doluyor ama sonrasında dolmuyor sanırım yani bu durumda  bunu düşünüyorum.

    BLL katmanı olayına gelirsek burada ki kod signal-r hub'ı ve burdan dönen değer controllera gidiyor o yüzden BLL içinde tanımlamak durumundayım

    20 Eylül 2016 Salı 09:37