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.
1 yorum:
Bana Yardımcı olabilirmisiniz
Yorum Gönder