.NET MVC 4 ile öğrenmek amacıyla bir kaç proje yapmıştım. Ama aktif olarak php ile yazılım geliştirmekteyim. Php de laravel mvc framework kullandığım için .net mvc ye de template sistemi çok benziyor. .NET MVC ile proje geliştirmem gerekiyor. php den aşinalığımla ve daha önceden uğraşmış olduğum için projeyi çıkarabilirim gibi duruyor. Yanlız ön araştırma yapınca .net mvc de kendi user auth kütüphanesi varmış. Ben kendi kütüphanesini okuyup zaman kaybetmek istemiyorum kendim yazdığım class da session kontrolü ile yapacağım.

Yazdığım class ın kullanıcı girişini kontrol eden methodunu her method da çağırmak biraz amatörce geldi.

public ActionResult Index()
{
    if(!MyAuth.IsLoggedI()){
        return RedirectToAction("Login");
    }
    return View();
}

Kullanıcı kontrolünü tek noktadan nasıl yapabilirim ? Filter tarzı birşey var mı? Ayrıca projeye başlamadan önce önerileriniz varsa paylaşırsanız sevinrim. Teşekkürler.

soruldu: 07 Kas '13, 10:43

alexander's gravatar image

alexander
185172023
cevap kabul oranı: 33%


.net te form authentication var.

FormsAuthentication.SetAuthCookie(model.KullaniciAdi, model.BeniHatirla);

ile kullanıcı sistemde aktiftir. Daha sonra istediğiniz controller sınıfı ve ya metodunda kullanıcı giriş yapmışmı diye aşağıdaki gibi kontrol edebilirsiniz.

Controller sınıfındaki tüm metodlar için;

[Authorize]
public class DashboardController : Controller
{
}

Controller içerisindeki tek metod için;

[Authorize] 
public ActionResult Index()
{
    return View();
}

BURADAN örnek haber sitesi projemi indirip, inceleyebilirsiniz. VisualStudio 2012 - 2013 ile açmalısınız. Ayrıca projede komple bir üyelik sistemini kendim hazırladım. .NET in kendi üyelik sistemi değil.

permanent link

cevaplandı: 07 Kas '13, 23:59

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 08 Kas '13, 00:01

teşekkürler. Peki o an giriş yapmış kullanıcının id bilgisine nasıl erişebileceğim ? .net kendi yöntemi ile değilde kendim kullanıcı yönetimini nasıl yapabilrim bu konuda önerinizi alabilir miyim ?

(08 Kas '13, 12:47) alexander alexander's gravatar image

[Authorize] eklemek yerine kod içinde kullanıcı giriş yapıp yapmadığını nasıl anlarım ?

(08 Kas '13, 14:29) alexander alexander's gravatar image
1

ilk yorumunuzun cevabı gonderdigim linkte var. O proje içerisinde kendi yapmış olduğum membership örneği var. İkinci yorumunuzun cevabı "User.Identity.IsAuthenticated" bunu view içerisinde de, controller içerisinde de cagırabilirsiniz. Kullanıcı giriş yapmıssa, bu static metod true dondurur.

(09 Kas '13, 14:13) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

FormsAuthentication.SetAuthCookie(userID, false); şeklinde userid değerini atayıp "@HttpContext.Current.User.Identity.Name" ile userid alıyorum doğru mu yapıyorum ? İlk sorum için verdiğiniz linkteki bakacağım dosyayı söyleyebilir misiniz?

(10 Kas '13, 11:45) alexander alexander's gravatar image
1

Id ile oturum acarsanız Id alırsınız. Ama bu doğru olmaz. Çünkü kullanıcı ismini gostermeniz gerekebilir. Kullanıcı adı ile Id ye ulasabileceginiz bir fonksiyon yazmalısınız.

(10 Kas '13, 12:38) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Filter kullanarak şu şekilde test uygulaması yaptım ama doğru yolla mı yaptım bilmiyorum ?

Libraries/MyAuth.cs

public class MyAuth
{
    public static void Login()
    {
        HttpContext.Current.Session["is_logged_in"] = "true";
    }

    public static bool IsLoggedIn()
    {
        if (HttpContext.Current.Session["is_logged_in"]==null)
        {
            return false;
        }
        return true;
    }

}

Filters/AuthFilterAttribute.cs

public class AuthFilterAttribute : FilterAttribute, IAuthorizationFilter
{

    public void OnAuthorization(AuthorizationContext filterContext) 
    {
        if (!MyAuth.IsLoggedIn())
        {
            filterContext.Result = new RedirectResult("~/Dashboard/Error");
        }
    }

}

Controllers/DashboardController.cs

public class DashboardController : Controller
{
    public ActionResult Login()
    {
        MyAuth.Login();
        return RedirectToAction("Index");
    }

    [AuthFilterAttribute] 
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Error()
    {
        return View();
    }

}
permanent link

cevaplandı: 07 Kas '13, 13:27

alexander's gravatar image

alexander
185172023
cevap kabul oranı: 33%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×80
×47
×26
×6

Soruldu: 07 Kas '13, 10:43

Görüntüleme: 3,521 kez

Son güncelleme: 10 Kas '13, 12:38

powered by BitNami OSQA