13 Ocak 2016 Çarşamba

ASP.NET MVC BasicAuthenticationAttribute

public class BasicAuthenticationAttribute : ActionFilterAttribute
{
    public string Rol { get; set; }
   
    public BasicAuthenticationAttribute(string rol)
    {
        Rol = rol;//gönderilen user bilgisinin rolünü kontrol etmek için kullanılacak
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        string username;
        string password;

        var req = filterContext.HttpContext.Request;
        var auth = req.Headers["Authorization"];
        if (!String.IsNullOrEmpty(auth))
        {
            var cred = System.Text.ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(auth.Substring(6))).Split(':');
            username = cred[0];
            password = cred[1];
        }

        bool authenticated = false;
        bool authorized = false;
        if(string.IsNullOrEmpty(username) == false && string.IsNullOrEmpty(password) == false)
        {   //kullanıcı yetki kontrolü yap
            authenticated = true;//gönderilen username ve password geçerli mi kontrolü burada yapılabilir

            //yetki kontrolü
            authorized = true;//
        }

        if (authenticated && authorized) return;//eğer kullanıcı geçerliyse ve yetkisi varsa çık

        if (authenticated == false)
        {
            var res = filterContext.HttpContext.Response;
            res.StatusCode = 401;
            res.AddHeader("WWW-Authenticate", "Basic realm=\"RTM\"");
            res.Write("Kullanıcı adı ve şifre geçersiz");
            res.End();
            return;
        }

        if (authorized == false)
        {
            var res = filterContext.HttpContext.Response;
            res.StatusCode = 403;
            res.Write("Yetki yok");
            res.End();
            return;
        }
    }
}

5 Ocak 2016 Salı

MS SQL Count alternatif

SQL de çok fazla kayıt olan tablolarda count almak yavaş olduğunda aşağıdaki sorguyla index üzerinden kayıt sayısı alınabilir.

SELECT rows FROM sysindexes WHERE id = OBJECT_ID('CihazVeri') AND indid < 2