{"id":137,"date":"2020-08-31T14:37:53","date_gmt":"2020-08-31T14:37:53","guid":{"rendered":"https:\/\/okankaradag.com\/?p=137"},"modified":"2021-04-20T15:08:58","modified_gmt":"2021-04-20T15:08:58","slug":"asp-net-core-rol-bazli-kimlik-dogrulama","status":"publish","type":"post","link":"https:\/\/okankaradag.com\/en\/asp-net\/asp-net-core\/asp-net-core-rol-bazli-kimlik-dogrulama","title":{"rendered":"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama"},"content":{"rendered":"<p>Bu yaz\u0131mda Asp.Net core 3.1 ile rol bazl\u0131 yetkilendirmenin identity olmadan nas\u0131l yap\u0131laca\u011f\u0131n\u0131 anlataca\u011f\u0131m.<\/p>\n\n\n\n<h4>Neden Identity Olmadan Yap\u0131yoruz?<\/h4>\n\n\n\n<p>\u0130htiyac\u0131m\u0131z olan sadece role bazl\u0131 do\u011frulama oldu\u011fundan identity&#8217;i kullanmak gereksiz olabilir, kapsam\u0131 \u00e7ok daha geni\u015f. Ve bence en \u00f6nemli neden identity ile a\u00e7\u0131nca direkt yap\u0131p ge\u00e7iyoruz neyin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131 hakk\u0131nda pek fikrimiz olmuyor bir de burada bir sorun \u00e7\u0131karsa \u00e7\u00f6zmesi zaman alabiliyor.<\/p>\n\n\n\n<h4>Asp.net Core 3.1 projesi a\u00e7arak ba\u015flayal\u0131m.<\/h4>\n\n\n\n<p>code-first ile veritaban\u0131m\u0131z\u0131 olu\u015fturaca\u011f\u0131z. User, Role ve UserRole adl\u0131 \u00fc\u00e7 tane tablomuz olacak.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >public class User\n{\n   public int Id { get; set; }\n   public string Name { get; set; }\n   public string FullName { get; set; }\n   public string Password { get; set; }\n   public ICollection&lt;UserRole&gt; UserRoles { get; set; }\n}<\/pre><\/div>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >public class Role\n{\n   public int Id { get; set; }\n   public string Name { get; set; }\n   public ICollection&lt;UserRole&gt; UserRoles { get; set; }\n}<\/pre><\/div>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >public class UserRole\n{\n   public int UserId { get; set; }\n   public int RoleId { get; set; }\n   public virtual User User { get; set; }\n   public virtual Role Role { get; set; }\n}<\/pre><\/div>\n\n\n\n<p>\u00c7oka \u00e7ok ili\u015fkinin veritaban\u0131na yans\u0131mas\u0131 i\u00e7in ilgili context s\u0131n\u0131f\u0131m\u0131zda fluent api kullanmal\u0131y\u0131z.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >public class ApplicationContext : DbContext\n{\n   public ApplicationContext(DbContextOptions options) : base(options){}\n   public DbSet&lt;User&gt; Users { get; set; }\n   public DbSet&lt;Role&gt; Roles { get; set; }\n   public DbSet&lt;UserRole&gt; UserRoles { get; set; }\n\n   protected override void OnModelCreating(ModelBuilder modelBuilder)\n   {\n     modelBuilder.Entity&lt;UserRole&gt;()\n      .HasKey(ur =&gt; new { ur.UserId, ur.RoleId });\n     modelBuilder.Entity&lt;UserRole&gt;()\n      .HasOne(ur =&gt; ur.User)\n      .WithMany(u =&gt; u.UserRoles)\n      .HasForeignKey(ur =&gt; ur.UserId);\n     modelBuilder.Entity&lt;UserRole&gt;()\n       .HasOne(ur =&gt; ur.Role)\n       .WithMany(u =&gt; u.UserRoles)\n       .HasForeignKey(ur =&gt; ur.RoleId);\n   }\n}<\/pre><\/div>\n\n\n\n<p>Contextimizi middleware&#8217;de tan\u0131mlayal\u0131m<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >services.AddDbContext&lt;ApplicationContext&gt;(options =&gt; options.UseSqlServer(Configuration.GetConnectionString(\"DefaultConnection\")));<\/pre><\/div>\n\n\n\n<p>Tablolar\u0131m\u0131z kullan\u0131ma haz\u0131r komut sat\u0131r\u0131na a\u015fa\u011f\u0131daki komutlar\u0131 yaz\u0131p veritaban\u0131na ekleyelim<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true\" >add-migration Initial\nupdate-database<\/pre><\/div>\n\n\n\n<p>Startup.cs de cookie ayarlar\u0131n\u0131 tan\u0131mlayal\u0131m<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >services.Configure&lt;CookiePolicyOptions&gt;(options =&gt;\n{\n   options.MinimumSameSitePolicy = SameSiteMode.None;\n});\nservices.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();<\/pre><\/div>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >app.UseCookiePolicy();\napp.UseAuthentication();\napp.UseAuthorization();<\/pre><\/div>\n\n\n\n<h4>HomeController&#8217;a basit bir login action&#8217;\u0131 ekleyelim ve viewini olu\u015ftural\u0131m<\/h4>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:xhtml decode:true\" >&lt;div class=&quot;container&quot;&gt;\n    &lt;div class=&quot;row&quot;&gt;\n        &lt;div class=&quot;col-md-3&quot;&gt;\n            &lt;h3&gt;Login&lt;\/h3&gt;\n            &lt;form asp-action=&quot;Login&quot; method=&quot;post&quot; action=&quot;&quot;&gt;\n                &lt;div class=&quot;form-group&quot;&gt;\n                    &lt;label&gt;Name:&lt;\/label&gt;\n                    &lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;name&quot; name=&quot;name&quot; \/&gt;\n                &lt;\/div&gt;\n                &lt;div class=&quot;form-group&quot;&gt;\n                    &lt;label&gt;Password:&lt;\/label&gt;\n                    &lt;input type=&quot;password&quot; class=&quot;form-control&quot; id=&quot;password&quot; name=&quot;password&quot; \/&gt;\n                &lt;\/div&gt;\n                &lt;div class=&quot;form-group&quot;&gt;\n                    &lt;label&gt;&lt;\/label&gt;\n                    &lt;input type=&quot;submit&quot; class=&quot;btn btn-primary&quot; value=&quot;Login&quot; \/&gt;\n                &lt;\/div&gt;\n            &lt;input type=&quot;hidden&quot; name=&quot;trp-form-language&quot; value=&quot;en&quot;\/&gt;&lt;\/form&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/pre><\/div>\n\n\n\n<p>\u015eimdi login action&#8217;\u0131n\u0131 yazmadan \u00f6nce claim kavram\u0131n\u0131 a\u00e7\u0131klayal\u0131m.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><strong>Claim<\/strong>:  Claim kelimesinin  t\u00fcrk\u00e7e  kar\u015f\u0131l\u0131\u011f\u0131 <em>talep etmek<\/em>\/<em>iddia etmek\/istek<\/em> gibi kelimeler denilebilir. Programlama da ise anahtar-de\u011fer \u00e7iftlerini tutan\/sa\u011flayan tiplere denir. \u00d6rneklersek; diyelim ki s\u00fcr\u00fcc\u00fc ehliyeti veren <strong>xyz <\/strong>adl\u0131 bir kurum var <strong>A <\/strong>ki\u015fisi de bu kurumdan  F tipi 2021&#8217;de ge\u00e7erlili\u011fi sona erecek bir  ehliyet als\u0131n. Bu durumda iki tane <strong>claim <\/strong>olu\u015facak  ilk claim&#8217;in ismi <strong>verili\u015f tarihi<\/strong>, de\u011feri <strong>2021<\/strong> di\u011fer claim&#8217;in de ismi <strong>ehliyet tipi<\/strong>, de\u011feri de <strong>F <\/strong>olacakt\u0131r. Bu claimlerin sa\u011flay\u0131c\u0131s\u0131 xyz adl\u0131 kurum, claimlerin ait oldu\u011fu ki\u015fi de A ki\u015fisidir.<\/p><\/blockquote>\n\n\n\n<p>ApplicationContext&#8217;i homecontroller&#8217;a enjekte edelim.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >private readonly ILogger&lt;HomeController&gt; _logger;\nprivate ApplicationContext Db;\npublic HomeController(ILogger&lt;HomeController&gt; logger, ApplicationContext applicationContext)\n{\n  _logger = logger;\n  Db = applicationContext;\n}<\/pre><\/div>\n\n\n\n<p>Login Action&#8217;\u0131:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >public IActionResult Login()\n{\n    return View();\n}\n[HttpPost]\npublic IActionResult Login(string name, string password)\n{\n     User user = Db.Users.FirstOrDefault(x =&gt; x.Name == name);\n     if (user == null)\n     {\n         return View();\n     }\n     var result = user.Password == password;\n     ClaimsIdentity identity = null;\n     bool isAuthenticate = false;\n     if (result)\n     {\n          var userRoles = Db.UserRoles.Where(ur =&gt; ur.UserId == user.Id);\n          var roles = Db.Roles.Where(ro =&gt; userRoles.Any(ur =&gt; ur.RoleId == ro.Id));\n          identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);\n          foreach (var item in roles)\n          {\n             identity.AddClaim(new Claim(ClaimTypes.Role, item.Name));\n          }\n         identity.AddClaim(new Claim(ClaimTypes.Name, name));\n         isAuthenticate = true;\n     }\n     if (isAuthenticate)\n     {\n         var principal = new ClaimsPrincipal(identity);\n         HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);\n         return RedirectToAction(\"Index\", \"Home\");\n     }\n     return View();\n}<\/pre><\/div>\n\n\n\n<p>name&#8217;i unique olarak d\u00fc\u015f\u00fcn\u00fcn. E\u011fer name ve password e\u015fle\u015firse kullan\u0131c\u0131n\u0131n veritaban\u0131ndan rollerini \u00e7ekip claime kaydedece\u011fiz. Claimi de cookie de tutaca\u011f\u0131z.<\/p>\n\n\n\n<p>ClaimIdentity ise da\u011f\u0131n\u0131k claimlerimizi bir arada tutmas\u0131n\u0131n yan\u0131nda AuthenticationType&#8217;\u0131 da tan\u0131mlamam\u0131za yard\u0131m\u0131c\u0131 oldu.<\/p>\n\n\n\n<p>En son a\u015famada kullan\u0131c\u0131y\u0131 authenticate etmemiz gerekiyor. Bunun i\u00e7inde ClaimsPrincipal s\u0131n\u0131f\u0131na ihtiya\u00e7 var ClaimsPrincipal da ClaimsIdentity&#8217;iyi i\u00e7ine alan bir s\u0131n\u0131f. Hiyera\u015fik olarak \u015f\u00f6yle bir dizilim ortaya \u00e7\u0131k\u0131yor <strong>Claims <\/strong>&gt; <strong>ClaimsIdentity <\/strong>&gt; <strong>ClaimsPrincipal<\/strong>.<\/p>\n\n\n\n<p>Logout metotu da \u015f\u00f6yle olacak:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" > public  IActionResult Logout()\n {\n    HttpContext.SignOutAsync();\n    return RedirectToAction(\"Index\", \"Home\");\n }<\/pre><\/div>\n\n\n\n<p>Veritaban\u0131m\u0131za birka\u00e7 rol ve user kaydedip UserRoles tablosunda da tan\u0131mlayal\u0131m.<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"453\" height=\"92\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/08\/Users.png\" alt=\"\" data-id=\"140\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=140\" class=\"wp-image-140\" srcset=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/08\/Users.png 453w, https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/08\/Users-300x61.png 300w\" sizes=\"(max-width: 453px) 100vw, 453px\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"255\" height=\"92\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/08\/Roles.png\" alt=\"\" data-id=\"141\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=141\" class=\"wp-image-141\"\/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" width=\"249\" height=\"115\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/08\/UserRoles.png\" alt=\"\" data-id=\"142\" data-full-url=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/08\/UserRoles.png\" data-link=\"https:\/\/okankaradag.com\/?attachment_id=142\" class=\"wp-image-142\"\/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Authorize attribute ile de role g\u00f6re kimlik do\u011frulamay\u0131 sa\u011flayal\u0131m.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"theme:github lang:c# decode:true\" >[Authorize(Roles = \"Member\")]\npublic IActionResult Index()\n{\n  return View();\n}\n[Authorize(Roles = \"Admin,Editor\")]\npublic IActionResult Privacy()\n{\n   return View();\n}<\/pre><\/div>\n\n\n\n<p>Index sayfas\u0131na istek gitti\u011finde \u00f6nce kullan\u0131c\u0131n\u0131n giri\u015f yap\u0131p yapmad\u0131\u011f\u0131na bakacak e\u011fer giri\u015f yapm\u0131\u015f ise <strong>ClaimType.Role<\/strong> keyi ile tutu\u011fumuz de\u011ferler ile attribute i\u00e7indeki e\u015fle\u015fiyor mu kontrol edecek e\u011fer uyu\u015fuyorsa sayfay\u0131 a\u00e7acak.<\/p>\n\n\n\n<h4>\u00d6zetlersek<\/h4>\n\n\n\n<p>Kullan\u0131c\u0131n\u0131n \u015fifre ve kullan\u0131c\u0131 ad\u0131 e\u015fle\u015fiyor  ise rol\u00fcn\u00fc ve kullan\u0131c\u0131 ad\u0131n\u0131 <strong>claim <\/strong>olarak <strong>cookie&#8217;de <\/strong>kaydediyoruz  ve bu kaydetti\u011fimiz de\u011ferleri <strong>rol <\/strong>gerekli actionlarda kontrol edip sonuca g\u00f6re sayfay\u0131 g\u00f6steriyoruz.<\/p>\n\n\n\n<p>Bu yaz\u0131n\u0131n sonuna geldik okudu\u011funuz i\u00e7in te\u015fekk\u00fcrler bir sonraki yaz\u0131da g\u00f6r\u00fc\u015fmek \u00fczere \ud83d\ude42<\/p>","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda Asp.Net core 3.1 ile rol bazl\u0131 yetkilendirmenin identity olmadan nas\u0131l yap\u0131laca\u011f\u0131n\u0131 anlataca\u011f\u0131m. Neden Identity Olmadan Yap\u0131yoruz? \u0130htiyac\u0131m\u0131z olan sadece role bazl\u0131 do\u011frulama oldu\u011fundan identity&#8217;i kullanmak gereksiz olabilir, kapsam\u0131 \u00e7ok daha geni\u015f. Ve&#46;&#46;&#46;<\/p>","protected":false},"author":1,"featured_media":121,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[40,17,42],"tags":[49,50,46,48,47],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama - Okan Karada\u011f<\/title>\n<meta name=\"description\" content=\"Asp.Net Core da identity kullanmadan rol bazl\u0131 kimlik do\u011frulamas\u0131 nas\u0131l yap\u0131l\u0131r inceleyelim.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/okankaradag.com\/en\/asp-net\/asp-net-core\/asp-net-core-rol-bazli-kimlik-dogrulama\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama - Okan Karada\u011f\" \/>\n<meta property=\"og:description\" content=\"Asp.Net Core da identity kullanmadan rol bazl\u0131 kimlik do\u011frulamas\u0131 nas\u0131l yap\u0131l\u0131r inceleyelim.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/okankaradag.com\/en\/asp-net\/asp-net-core\/asp-net-core-rol-bazli-kimlik-dogrulama\/\" \/>\n<meta property=\"og:site_name\" content=\"Okan Karada\u011f\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-31T14:37:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-20T15:08:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/07\/csharp-e1595074867936.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"165\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Okan Karada\u011f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Okan Karada\u011f\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#article\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama\"},\"author\":{\"name\":\"Okan Karada\u011f\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"headline\":\"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama\",\"datePublished\":\"2020-08-31T14:37:53+00:00\",\"dateModified\":\"2021-04-20T15:08:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama\"},\"wordCount\":537,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"keywords\":[\"ASP.NET Core Identity\",\"EntityFramework Core\",\"Rol Bazl\u0131 Kimlik Do\u011frulama\",\"Role based Authorization\",\"Wtihout Identity\"],\"articleSection\":[\"Asp.Net Core\",\"C#\",\"EntityFramework Core\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama\",\"url\":\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama\",\"name\":\"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama - Okan Karada\u011f\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/#website\"},\"datePublished\":\"2020-08-31T14:37:53+00:00\",\"dateModified\":\"2021-04-20T15:08:58+00:00\",\"description\":\"Asp.Net Core da identity kullanmadan rol bazl\u0131 kimlik do\u011frulamas\u0131 nas\u0131l yap\u0131l\u0131r inceleyelim.\",\"breadcrumb\":{\"@id\":\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/okankaradag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/okankaradag.com\/#website\",\"url\":\"https:\/\/okankaradag.com\/\",\"name\":\"Okan Karada\u011f\",\"description\":\"Programlama \u00dczerine\",\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/okankaradag.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\",\"name\":\"Okan Karada\u011f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"caption\":\"Okan Karada\u011f\"},\"logo\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/okankaradag.com\"],\"url\":\"https:\/\/okankaradag.com\/en\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama - Okan Karada\u011f","description":"Asp.Net Core da identity kullanmadan rol bazl\u0131 kimlik do\u011frulamas\u0131 nas\u0131l yap\u0131l\u0131r inceleyelim.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/okankaradag.com\/en\/asp-net\/asp-net-core\/asp-net-core-rol-bazli-kimlik-dogrulama\/","og_locale":"en_US","og_type":"article","og_title":"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama - Okan Karada\u011f","og_description":"Asp.Net Core da identity kullanmadan rol bazl\u0131 kimlik do\u011frulamas\u0131 nas\u0131l yap\u0131l\u0131r inceleyelim.","og_url":"https:\/\/okankaradag.com\/en\/asp-net\/asp-net-core\/asp-net-core-rol-bazli-kimlik-dogrulama\/","og_site_name":"Okan Karada\u011f","article_published_time":"2020-08-31T14:37:53+00:00","article_modified_time":"2021-04-20T15:08:58+00:00","og_image":[{"width":400,"height":165,"url":"https:\/\/okankaradag.com\/wp-content\/uploads\/2020\/07\/csharp-e1595074867936.jpg","type":"image\/jpeg"}],"author":"Okan Karada\u011f","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Okan Karada\u011f","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#article","isPartOf":{"@id":"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama"},"author":{"name":"Okan Karada\u011f","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"headline":"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama","datePublished":"2020-08-31T14:37:53+00:00","dateModified":"2021-04-20T15:08:58+00:00","mainEntityOfPage":{"@id":"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama"},"wordCount":537,"commentCount":2,"publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"keywords":["ASP.NET Core Identity","EntityFramework Core","Rol Bazl\u0131 Kimlik Do\u011frulama","Role based Authorization","Wtihout Identity"],"articleSection":["Asp.Net Core","C#","EntityFramework Core"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#respond"]}]},{"@type":"WebPage","@id":"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama","url":"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama","name":"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama - Okan Karada\u011f","isPartOf":{"@id":"https:\/\/okankaradag.com\/#website"},"datePublished":"2020-08-31T14:37:53+00:00","dateModified":"2021-04-20T15:08:58+00:00","description":"Asp.Net Core da identity kullanmadan rol bazl\u0131 kimlik do\u011frulamas\u0131 nas\u0131l yap\u0131l\u0131r inceleyelim.","breadcrumb":{"@id":"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/okankaradag.com\/csharp\/asp-net-core-rol-bazli-kimlik-dogrulama#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/okankaradag.com\/"},{"@type":"ListItem","position":2,"name":"Asp.Net Core Rol Bazl\u0131 Kimlik Do\u011frulama"}]},{"@type":"WebSite","@id":"https:\/\/okankaradag.com\/#website","url":"https:\/\/okankaradag.com\/","name":"Okan Karada\u011f","description":"Programlama \u00dczerine","publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/okankaradag.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52","name":"Okan Karada\u011f","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","caption":"Okan Karada\u011f"},"logo":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/okankaradag.com"],"url":"https:\/\/okankaradag.com\/en\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/137"}],"collection":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":7,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/137\/revisions\/251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media\/121"}],"wp:attachment":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}