banner



How To Create A Login Page Using Asp Net

/Other

Create Your Own Login Page With ASP.NET Core MVC | Cara Membuat Login Page Pada ASP.NET Core MVC

Tutorial membuat login dengan database menggunakan ASP.NET Core

Cara membuat login dan register page pada ASP.NET Core dengan metode MVC

Pada tutorial kali ini kita akan belajar membuat login page dengan ASP.NET Core menggunakan database SQLite3.

Sebagai pemula dalam sebuah Web Framework, kita pasti akan belajar membuat sebuah login dan register page dalam untuk menghandle user dan membatassi akses pada laman tertentu.

Berikut ini adalah tutorial yang dapat kita pelajar bersama untuk membuat sebuah login page dan register page menggunakan ASP.NET Core MVC berdasarkan default pattern dari ASP.NET Core MVC.

Ready? Let's start it dude!.

Tools yang akan kita gunakan di bawah ini:

  • Visual Studio Code
  • Linux Ubuntu (all version)

Note: Tutorial yang akan kita pelajari di bawah bisa teman-teman terapkan juga menggunakan Windows maupun Mac OS-X

Langkah pertama: Pastikan .NET Core sudah terintstall pada device kita.

Creating Your First Project

Langkah kedua: Buatlah project baru dengan perintah seperti berikut:

                $ dotnet new webapp --auth Individual -o NamaProject              

Maka .NET Core akan membuat project baru.

Langkah selanjutnya adalah update database dengan perintah:

                $ dotnet ef database update              

Maka .NET Core akan melakukan update pada database yang akan kita gunakan seperti berikut:

                [email protected]:~/Documents/.net/AspNet$ dotnet ef database update info: Microsoft.EntityFrameworkCore.Infrastructure[                  10403                  ]                  Entity Framework Core                  2.2.3-servicing-35854 initialized                  'ApplicationDbContext'                  using provider                  'Microsoft.EntityFrameworkCore.Sqlite'                  with options: None info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (17ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  PRAGMA                  foreign_keys                  =ON;                  info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (0ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  PRAGMA                  foreign_keys                  =ON;                  info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (6ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  SELECT COUNT(*)                  FROM                  "sqlite_master"                  WHERE                  "name"                  =                  '__EFMigrationsHistory'                  AND                  "type"                  =                  'table'                  ;                  info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (0ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  PRAGMA                  foreign_keys                  =ON;                  info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (0ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  PRAGMA                  foreign_keys                  =ON;                  info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (0ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  SELECT COUNT(*)                  FROM                  "sqlite_master"                  WHERE                  "name"                  =                  '__EFMigrationsHistory'                  AND                  "type"                  =                  'table'                  ;                  info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (0ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  PRAGMA                  foreign_keys                  =ON;                  info: Microsoft.EntityFrameworkCore.Database.Command[                  20101                  ]                  Executed DbCommand                  (2ms)                  [Parameters=                  [                  ],                  CommandType                  =                  'Text',                  CommandTimeout                  =                  '30'                  ]                  SELECT                  "MigrationId",                  "ProductVersion"                  FROM                  "__EFMigrationsHistory"                  ORDER BY                  "MigrationId"                  ;                  info: Microsoft.EntityFrameworkCore.Migrations[                  20405                  ]                  No migrations were applied. The database is already up to date. No migrations were applied. The database is already up to date. Done.              

Jalankan aplikasinya untuk memastikan kita telah membuatnya dengan benar dengan perintah:

Apabila kita berhasil membuatnya tanpa kendala, maka akan muncul seperti di bawah ini:

                [email protected]:~/Documents/.net/AspNet$ dotnet run                  :                  Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[                  0                  ]                  User profile is available. Using                  '/home/icoldplayer/.aspnet/DataProtection-Keys'                  as key repository;                  keys will not be encrypted at rest. Hosting environment: Development Content root path: /home/icoldplayer/Documents/.net/AspNet Now listening on: https://localhost:5001 Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down.              

Arahkan url di atas ke browser kita, maka akan muncul default page ASP.NET di sana.

images

Seperti yang kita lihat, pada pojok kanan atas sudah tersedia pilihan Register dan Login di sana. Amazing bukan?.

Langkah selanjutnya adalah melakukan configurasi pada indentitas servis.

Configure Identity Services

Setelah kita berhasil membuat aplikasi di atas, kita sudah bisa melakukan login dan register. Akan tetapi login dan register tersebut adalah default atau bawaan dari .NET Core itu sendiri.

Sekarang mari kita melakukan sedikit customisasi sehingga saat user melakukan register, mereka bebas dapat menggunakan karakter apapun. Tidak seperti defaultnya yang membuat kita sedikit annoying bukan? karena harus include semua karakter.

pada root folder, pastekan kode di bawah ini pada file Startup.cs.

                                  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.Http                  ;                  using                  Microsoft.AspNetCore.HttpsPolicy                  ;                  using                  Microsoft.AspNetCore.Mvc                  ;                  using                  Microsoft.EntityFrameworkCore                  ;                  using                  AspNet.Data                  ;                  using                  Microsoft.Extensions.Configuration                  ;                  using                  Microsoft.Extensions.DependencyInjection                  ;                  namespace                  AspNet                  {                  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                  =>                  {                  // This lambda determines whether user consent for non-essential cookies is needed for a given request.                  options.CheckConsentNeeded                  =                  context                  =>                  true                  ;                  options.MinimumSameSitePolicy                  =                  SameSiteMode.None;                  }                  )                  ;                  services.                                      AddDbContext                                          <ApplicationDbContext>                                                        (options                  =>                  options.                  UseSqlite                  (                  Configuration.                  GetConnectionString                  (                  "DefaultConnection"                  )                  )                  )                  ;                  services.                                      AddDefaultIdentity                                          <IdentityUser>                                                        (                  )                  .                  AddDefaultUI                  (UIFramework.Bootstrap4)                  .                                      AddEntityFrameworkStores                                          <ApplicationDbContext>                                                        (                  )                  ;                  // Konfigurasi Untuk Identitas User                  services.                                      Configure                                          <IdentityOptions>                                                        (options                  =>                  {                  //Berikut ini adalah password setting authentications untuk user yang akan register                  options.Password.RequireDigit                  =                  true                  ;                  options.Password.RequireLowercase                  =                  true                  ;                  options.Password.RequireNonAlphanumeric                  =                  true                  ;                  options.Password.RequireUppercase                  =                  false                  ;                  options.Password.RequiredLength                  =                  6                  ;                  options.Password.RequiredUniqueChars                  =                  0                  ;                  // there must be integer                  //mengatur Logout session                  options.Lockout.DefaultLockoutTimeSpan                  =                  TimeSpan.                  FromMinutes                  (                  3                  )                  ;                  // maksimal user melakukan kesalahan saat akan login                  options.Lockout.MaxFailedAccessAttempts                  =                  5                  ;                  // memperbolehkan user baru untuk login setelah user lama logout                                    options.Lockout.AllowedForNewUsers                  =                  true                  ;                  //User Settings                  // karakter yang diperbolehkan untuk digunakan oleh user                  options.User.AllowedUserNameCharacters                  =                  "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"                  ;                  // email yang diperbolehkan digunakan oleh user                  options.User.RequireUniqueEmail                  =                  false                  ;                  }                  )                  ;                  services.                  ConfigureApplicationCookie                  (options                  =>                  {                  // Cookie settings                  options.Cookie.HttpOnly                  =                  true                  ;                  options.ExpireTimeSpan                  =                  TimeSpan.                  FromMinutes                  (                  5                  )                  ;                  options.LoginPath                  =                  "Identity/Account/Login"                  ;                  options.AccessDeniedPath                  =                  "/Identity/Account/AccessDenied"                  ;                  options.SlidingExpiration                  =                  true                  ;                  }                  )                  ;                  services.                  AddMvc                  (                  )                  .                  SetCompatibilityVersion                  (CompatibilityVersion.Version_2_2)                  ;                  }                  // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.                  public                                      void                                    Configure                  (                  IApplicationBuilder                  app,                  IHostingEnvironment                  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.                  UseCookiePolicy                  (                  )                  ;                  app.                  UseAuthentication                  (                  )                  ;                  app.                  UseMvc                  (                  )                  ;                  }                  }                  }                              

Berdasarkan source code di atas, kita dapat menentukan authentication yang akan digunakan oleh user semau kita.

Untuk dokumentasi lebih lanjut silahkan kunjungi dokumentasi dari Official .NET Core

Melakukan Scaffold untuk Register, Login, dan Logout.

Selanjutnya, lakukan generate lagi untuk project kita, berdasarkan nama project masing-masing.

Follow this command!.

                $ dotnet                  add                  package Microsoft.VisualStudio.Web.CodeGeneration.Design              

Output:

                [email protected]:~/Documents/.net/AspNet$ dotnet                  add                  package Microsoft.VisualStudio.Web.CodeGeneration.Design   Writing /tmp/tmpSISgkt.tmp info                  :                  Adding PackageReference                  for                  package                  'Microsoft.VisualStudio.Web.CodeGeneration.Design'                  into project                  '/home/icoldplayer/Documents/.net/AspNet/AspNet.csproj'                  .                  log                  :                  Restoring packages                  for                  /home/icoldplayer/Documents/.net/AspNet/AspNet.csproj... info                  :                  GET https://api.nuget.org/v3-flatcontainer/microsoft.visualstudio.web.codegeneration.design/index.json info                  :                  OK https://api.nuget.org/v3-flatcontainer/microsoft.visualstudio.web.codegeneration.design/index.json 1127ms info                  :                  Package                  'Microsoft.VisualStudio.Web.CodeGeneration.Design'                  is compatible with all the specified frameworks                  in                  project                  '/home/icoldplayer/Documents/.net/AspNet/AspNet.csproj'                  .                  info                  :                  PackageReference                  for                  package                  'Microsoft.VisualStudio.Web.CodeGeneration.Design'                  version                  '2.2.3'                  added to                  file                  '/home/icoldplayer/Documents/.net/AspNet/AspNet.csproj'                  .                  info                  :                  Committing restore... log                  :                  Generating MSBuild                  file                  /home/icoldplayer/Documents/.net/AspNet/obj/AspNet.csproj.nuget.g.props. info                  :                  Writing lock                  file                  to disk. Path: /home/icoldplayer/Documents/.net/AspNet/obj/project.assets.json log                  :                  Restore completed                  in                  15.83                  sec                  for                  /home/icoldplayer/Documents/.net/AspNet/AspNet.csproj.              

Setelah berhasil, lakukan generate selanjutnya untuk generate. and then follow this command:

                $ dotnet aspnet-codegenerator identity -dc AspNet.Data.ApplicationDbContext --files                  "Account.Register;Account.Login;Account.Logout"                              

Jika berhasil, the output should looks like:

                [email protected]:~/Documents/.net/AspNet$ dotnet aspnet-codegenerator identity -dc AspNet.Data.ApplicationDbContext --files                  "Account.Register;Account.Login;Account.Logout"                  Building project                  ... Finding the generator                  'identity'                  ... Running the generator                  'identity'                  ... RunTime 00:00:23.51              

Apabila proses generate di atas berjalan lancar, maka akan kita akan memiliki file ScaffoldingReadme.txt pada directory root kita.

imgs

See? and we're done here.

Jika kita ingin mencega anonymous akses pada halaman tertentu, kita bisa menggunakan Authorizations.

Contoh:

Edit file Privacy.cshtml.cs, lalu ikuti contoh di bawah ini.

                                  // import authorize untuk mencegah anonymous access / user yang tidak login                  using                  Microsoft.AspNetCore.Authorization                  ;                  namespace                  AspNet.Pages                  {                  //mencegah akses kepada user yang tidak login untuk mengakses page yang membutuhkan authorize                  [Authorize]                  public                  class                  PrivacyModel                  :                                      PageModel                                    {                  public                                      void                                    OnGet                  (                  )                  {                  }                  }                  }                              

Jika berhasil, lakukan test kembali. pastikan kita telah logout dari aplikasi tersebut, laku klik link privacy pada halaman home. Apabila kita belum login, maka kita tidak diizinkan untuk mengakses halaman tersebut.

That's it guys!. Thank's for reading, jika ada kekeliruan dalam penulisan maupun pertanyaan, silahkan tinggalkan opini kalian di kolom komentar di bawah.


Tags: #blog, #ASP.NET

Subscribe to noTnoob Dev

Get the latest posts delivered right to your inbox

How To Create A Login Page Using Asp Net

Source: https://dev.notnoob.com/membuat-login-page-pada-asp.net-core/

Posted by: thibaultdianow.blogspot.com

0 Response to "How To Create A Login Page Using Asp Net"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel