Osman KURT

Kendime Not

MVC Projelerde Login Kontrolü Yapma Authorize Kullanımı

Bir proje yaptık ve admin panelimiz var yada kullanıcı girişi olduğunu varsaydığımız herhangi bir yer. Bunu ya session yada cookie kullanarak sağlarız. İf koşulumuzu koyarız ve yolumuza devam ederiz. Şimdi şöyle bir durum var. MVC de sayfalar actionresult'lardan oluşmakta hepsi için tek tek if mi yazacağız tabiki hayır. Gerekli gördüğümüz yerde yazabiliriz tabiki ama bir admin paneli için bunu te tek yazmak yazılım hammallığından başka birşey değil tabiki.

Gelelim bu olayı tek bir kod bloğu ile nasıl yapacağımıza. MVC bize authorize diye bir nimet sunmuş ve bunu istediğimiz gibi editlememize olanak sağlamış.

İlk yapmamız gereken kendimize bir class tanımlamak ve bu classı MVC de AuthorizeAttribute sınıfından türetmek. olacak. Daha sonra bu classımızın içine bize bool değer döndüren bir overried bir method yazıyoruz ve if koşulumuzu burada sağlıyoruz. Duruma göre True yada False döndürerek işlemimizin gerçekleşmesini sağlayacağız ve controller'a kullanıcının erişim hakkının olup olmadığını sağlayacağız.

Kod bloğumuz alt kısımda ki gibi;

public class UserAuthorize : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (httpContext.Request.Cookies["osmankurtnet"] != null)
            {
                return true;
            }
            else
            {
                httpContext.Response.Redirect("/Yonetim/Login/Index");
                return false;
            }

        }
    }

Authorize kodumuzu tamamladığımıza göre sıra onu controller alanımızda kullamaya geldi. Onuda alt kısımda ki gibi kullanıyoruz.

[UserAuthorize]
public class AdminController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
 }

Bu kodumuzu da bu şekilde kullanıyoruz ve istediğimiz şekilde sisteme giriş yetkisi verebiliyor yada engelleyebiliyoruz.

Görüşmek üzere

Osman KURT
Yazılım Uzmanı

MVC Projelerde Editör Kullanırken Alınan HTML Hatası

Mvc proje yazarken genellikle panellerimiz de editör kullanırız. Çünkü eklemek istediğimiz yazılarımıza istediğimiz html taglarını runtime da rahatlıkla vermemize olanak sağlarlar. Birçok örnek verebiliriz bu editörlere ben genellikle CKEditor kullanıyorum.

Gerekli script dosayalarımızı projemize eklediğimizi varsayıyorum ve sayfamızda editörümüzü gördük ve kaydet butonumuza bastık. Karşımıza bir hata çıktı hata içeriğinde html taglarının tehlikesinden bahsediyor. ASP.Net yazarken .aspx sayfalarımıza validatrequest=false diye kullandığımız kodumuz aklımıza geliyor ve bunu mvc deki karşılığını arıyoruz. Bu sefer bu kodumuzu yeni tabirle view sayfamıza değilde controller kısmında controller name alanımızın en başına yazıyoruz.

Kod bloğu alt kısımda mevcut;

    [ValidateInput(false)]
    public class AdminController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
     }

Kodumuz bu kadar artık istediğimiz gibi editörümüze hükmedebiliriz.

Osman KURT
Yazılım Uzmanı

ASP.Net MVC Entity Framework Select, Insert, Update ve Delete işlemi

Microsoftbazı projeleine yıllar boyu destek verirken bazı projelerinide elinin tersi ile itiyor ve kısa sürede öldürebiliyor. Bunlara örnek vermek gerekirse XP :)

XP uzun yıllar hayatımızda olan bir işletim sistemi. Belki de belli bir zamana kadar microsoft'un bizlere kazandırdığı en değerli ürünüydü ama herşey gibi onunda sonu geldi tabi. Diğer türlü öldürdüğü yazılımlarına teknolojilerine gelirsek mesleğimle ilgili olan linq teknolojisi. Zamanın öğreneilmesi gereken bir teknolojiydi ama microsoft ani bir kararla artık bu teknolojiyi update etmeyeceğini ve yoluna entity framework ile devam edeceğini açıkladı.

Benimde gerçekten kullanmaktan zevk aldığım bir teknoloji her ne kadar arka kısımda bazı "?" işaretleri olsada kullanmakatan zevk alıyorum diyebilirim.

Bu yazımda size kısaca insert, update ve delete işlemlerinden bahsedeceğim. İlk olarak insert işleminden başlayalım isterseniz.

Firmalar adında bir tablomuz olsun ve bu tablomuzun FirmaAdi alanına 1 adet kayıt eklemek isteyelim.

Firmalar FrAdd = new Firmalar();
FrAdd.FirmaAdi = fir.FirmaAdi;
entity.Firmalar.Add(FrAdd);
entity.SaveChanges();

İşte bu kadar basit. Tablomuzu türetiyoruz verimizi eşitliyoruz hangi tablomuza kayıt atacağımızı belirledikten sonra Entity SaveChanges diyerek kayıt işlemimizi tamamlıyoruz. Unutmamamız gereken nokta her işlemden sonra Entity.SaveChanges(); mutlak suretle yazmamaız aksi takdirde yapılan işlem gerçekleşmeyecek.

Peki update kodumuz nasıl olacak.

Firmalar FirmaDetay = (from a in entity.Firmalar where a.FirmaID == id select a).FirstOrDefault();
FirmaDetay.FirmaAdi = fir.FirmaAdi;
entity.SaveChanges();

Bu işlemimiz de bu kadar. İlk yapılan update yapılacak verimizi select yapmak istediğimiz alandaki değişiklikleri eşitledikten sonra Entity.SaveChanges(); diyerek yapılan işlemi DB ye Execute etmek.

Kısaca silme kodumuz ise aynı şekilde select işlemi yapıldıktan sonra,

var FirmaDetay= (from a in entity.Firmalar where a.FirmaID== id select a).FirstOrDefault();
entity.Firmalar.Remove(FirmaDetay);
entity.SaveChanges();


Bu işlemimiz de son bulduğuna göre artık yazımızı sonlandırmanın zamanı geldi select işlemi hem Update hemde Delete kod bloglarında olduğu için yeniden yazma gereği duymadım. O kısımdan bakabilirsiniz.

Tekrar görüşmek üzere,

Osman KURT
Yazılım Uzmanı