ASP NET CORE RAZOR PAGE BAKIM TEKNİK SERVİS PROJESİ DERS 002 Startup.cs İncelemesi ve Environment Özelliği

Şimdi startup.cs içini inceleyelim, bir önceki KitapListesi projesini gerçekleştiren arkadaşlarımız bilirler, oradakinden daha farklı bir startup.cs var şu an karşımızda.

Bu dersin video versiyonunu da izlemenizi tavsiye ederim.

İlk değişiklik görüleceği üzere Application Db Context burada oluşturulmuş. Hatta DefaultConnection şeklinde isim bile otomatik olarak verilmiş. Bunun otomatik olarak ouşturulmasının sebebi bizim proje oluştururken bir önceki video da hatırlarsınız ki, Authentication seçeneklerinde Individual User’s Account seçmiş olmamız. Dolayısı ile EntityFramework ile alakalı tüm paketler de otomatik olarak yüklendiler. Packages kısmında bunları görebiliriz.

Aşağıdaki kodu ekleyerek cookie ayarlarımız için de ilgili hizmetleri ekleyebiliriz.

ConfigureServices metodumuzun hemen altına aşağıdaki kodları ekliyoruz:

services.Configure< CookiePolicyOptions >(options =>
            {
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
            });

Not: Kodları takip edebilmek için video eğitimi inceleyiniz.

Burada kişinin cookie bilgilerinin saklanmasına izin verilip verilmeyeceği sorgulanıyor isterseniz sorgulamaması için false diyebilirsiniz. Hatta arzu ederseniz bu kısmı şu anda mevcut projemiz için yazmayabilirsiniz de. Ben göstermek amaçlı değinmek istedim.

Startup.cs dosyamda yer alan şu kod;

services.AddDefaultIdentity< IdentityUser >(options => options.SignIn.RequireConfirmedAccount = true)

Not: Kodları takip edebilmek için video eğitimi inceleyiniz.

Varsayılan kimlik servisi ile alakalı metodum. Bu metodumda kullanıcı oturum açtığında doğrulama yapılmasına ilişkin seçenek tanımlanmış bunun her zaman olmasını istemiyorum, kullanıcı oturum açınca sürekli bir doğrulama ile karşılaşmasın. Üye olurken evet doğrulama mantıklı ama her sign in de yani her oturumda doğrulama yapmak etkin bir çözüm değil. Burayı şöyle değiştiriyorum:

services.AddDefaultIdentity< IdentityUser >().AddEntityFrameworkStores< ApplicationDbContext >();

Not: Kodları takip edebilmek için video eğitimi inceleyiniz.

Böylelikle default db context ve default identity servisleri düzenleme işimiz bitti.

Projeyi çalıştırdığımda standart olarak neler var görelim. Bootstrap teması ile standart görünümümüzde proje başlığımız, Home, Privacy sayfası mevcut. Ayrıca Register ve Login sayfaları da var.

Burada yer alan navigasyın çubuğundaki sayfa başlıklarını Pages > Shared > _Layout.cshtml dosyası üzerinden değiştirebiliriz. Ayrıca Shared klasörü içinde Partial View sayfalarımda mevcut.

Buraya şimdi Cookie onayı aldığımız partial view için razor page ekleyelim. Add diyerek New Item ve Razor Page seçiyorum. Adını da _CookieConsentPartial verdim. Partial View eklediğim için çıkan seçenekler üzerinde Page Model seçmiyorum, Partial View seçiyorum. Partial View Ekleme işlemim bu şekilde şimdilik bunu kullanmayacağım ama. İsterseniz silebilirsiniz.

Startup.cs kodlarımızın tamamı:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.UI;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.EntityFrameworkCore;
using GursoyCNCBakim.Data;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace GursoyCNCBakim
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure< CookiePolicyOptions >(options =>
           {
               options.CheckConsentNeeded = context => true;
               options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
           });

            services.AddDbContext< ApplicationDbContext >(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));
            services.AddDefaultIdentity< IdentityUser >().AddEntityFrameworkStores< ApplicationDbContext >()
                .AddEntityFrameworkStores< ApplicationDbContext >();
            services.AddRazorPages().AddRazorRuntimeCompilation();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
            });
        }
    }
}

Ben şimdilik bırakıyorum.

Environment Özelliği

Şimdi _Layout.cshtml’e gelelim. Burada görüleceği üzere benim css ve javasacript dokümanlarıma linkler verilmiş. Ben burada environment özelliğinden bahsetmek istiyorum, burayı böyle de kullanabilirsiniz ama yeri gelmişken değinelim. Environment özelliği ile bir site geliştirilirken yani development aşamasında neler kullanılır, development harici deploy aşamasında neler kullanılır şeklinde ayarlama yapabiliriz. Burada include ve exclude deyimlerini kullanıyoruz. Include geliştirme aşaması, exclude ise geliştirme ortamının dışı olarak düşünülmeli. Buna ilişkin örnekle css ve javascript dokümanlarımızı refere edip, dersimizi burada bitirelim.

Detay için video derse mutlaka göz atınız.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir