7 Ağustos 2018 Salı

Forms Authentication - MVC Login Kontrolü

Forms Authentication kısaca form doğrulama mekanızması olarak düşünülebilir. MVC projelerinde cookie kullanılacağında bu yapıya başvurulması gerekmektedir.

Login işlemi gerçekleştiğinde kullanıcı adı ve şifre doğru ise aşağıdaki kod satırı ile cokie'ye kullanıcının bilgileri atılabilir. Örnekte giriş yapan kullanıcının eposta adresi kullanılmıştır.

FormsAuthentication.SetAuthCookie(eposta, true);


Ardından session controlünün yapılacağı bir filter class oluşturulmalıdır. Bu sayede üye girişi isteyen actionlar kontrol edilebilir hala gelecektir.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace xxxx
{
    public class _SessionController
    {

    }

    class _SessionControlAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (!HttpContext.Current.Response.IsRequestBeingRedirected)
                    filterContext.HttpContext.Response.Redirect("/Giris/Index");

            }

        }
    }

}

Giriş kontrol işlemleri tamamlandı. Fakat bu haliyle proje çalıştırıldığında   "HttpContext.Current.User.Identity.IsAuthenticated" sürekli boş olarak gelecektir ve giriş bilgileri doğru olsa bile giriş if'in içerisine girerek sizi giriş ekranına yönlendirecektir. Bunun çözümü ise webconfig ayarlarıyla olmaktadır.


<system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Giris/Index/" timeout="2880"/>
    </authentication>
  </system.web>

Bu ayardaki loginUrl; giriş sayfası, timeout ise cookinin bellekte tutulma süresidir. Authentication yapısının çalışması için bu özelliklerin tanımlanması zorunludur.

Çıkış işlemi için ise yine bu yapının sağladığı yardımı ile  cookiye son verilmektedir. Sadece action içine aşağıdaki satırın yazılması ve gerekli yönlendirmenin yapılması yeterlidir.


 FormsAuthentication.SignOut();

Authentication yapısı burada anlatılandan daha komplike ve tüm isteklerinizi karşılayacak bir yapı. ol yönetiminde kullanılan location gibi daha bir çok özelliği yer almaktadır. Bunlara göz atabilirsiniz.
Paylaş:

1 yorum:

Mr Developer dedi ki...

Bana Yardımcı olabilirmisiniz

Yorum Gönder