asp.net core MVC login menggunakan custom database. Part-2

HttpPost, HttpGet dan Authorize attributes.

Melanjutkan artikel part-1. Untuk meng-handle autentikasi dan input dari login form yang dikirim browser dengan metod POST, harus menggunakan HttpPost attribute pada method/action yang ada di SecurityController. Untuk itu tambahkan method baru yaitu Login dengan parameter type LoginViewModel.

SecurityController login post
SecurityController login post

Saya akan menjelaskan gambar diatas, attribute yang dipakai adalah [HttpPost], [AllowAnonymous] dan [ValidateAntiForgeryToken]. [HttpPost] attribute menandakan bahwa method/action in hanya bisa diakses menggunakan http verb POST. [AllowAnonymous] artinya bisa diakses oleh semua user tanpa harus terautentikasi terlebih dahulu. [ValidateAntiForgeryToken] artinya semua request yang masuk harus ada csrf token -nya lebih jelasnya bisa lihat artikel ini. basically jika kita menggunakan asp.net razor tag helper, maka kita tidak perlu khawatir untuk menambahkan hidden input yang berisi csrf token secara manual pada saat membuat view. Karena asp.net razor tag helper secara otomatis melakukan render form termasuk hidden input_RequestVerificationtoken yang secara otomatis akan divalidasi oleh controller.
Selain 3 attribute di atas, ada juga attribute lain yang menandakan http verb yaitu; [HttpGet],[HttpPut],[HttpDelete]. Masing-masing attribute menandakan http verb sesuai namanya. Ada juga atribute lain yang menandakan otorisasi/security features yang lain yaitu [Authorize] yang akan meng-handle proses penentuan seorang user bisa mengakses/melakukan apa saja.

Razor tag helper

Buka file Login.cshtml dan tambahkan form tag dan input serta button login seperti gambar di bawah.

login.cshtml menggunakan razor tag helper
login form with razor html tag helper

Pada baris 10, form tag helper tidak perlu menambahkan hidden input berisi __RequestVerificationToken karena View kita sudah menggunakan teknolog razor view page. Maka RequestVerificationToken otomatis dibuatkan oleh asp .net core pada saat browser client melakukan render view Login.
render html form
render html form di browser client

Seperti gambar dibawah ini, dimana razor view engine secara otomatis melakukan render hidden input yang berisi requestverificationtoken.
view source - render html form
view source – render html form

Testing autentikasi

Untuk membuktikan autentikasi berhasil dilakukan dan aplikasi bisa mengenal user yang sudah terautentikasi dan belum, kita perlu mengubah HomeController method Contact dengan menambahkan attribute [Authorize]. Kemudian masih di dalam HomeController, ubah method About untuk menampilkan nama user di ViewData[“message”].

about, contact auhorize
about, contact menampilkan user.

Sekarang jalankan aplikasi web tersebut, tekan F5 pada VSCode untuk men-debug aplikasi. Buka url http://localhost:5000/Security/Login, isi form tersebut dengan username dan password. Belum ada validasi kueri ke database, karena hanya akan menguji proses login dan memberikan cookie authentication kepada user. Jika berhasil login, user akan dibalikan ke Home url (/Home/index). Untuk melihat user apakah user berhasil terautentikasi, buka halam About untuk melihat username yang dipakai untuk login tadi.

This slideshow requires JavaScript.


Untuk melakukan validasi dengan database, perlu dibuatkan Model dengan EntityFrameworkCore menggunakan database SQL Server yang akan di jelaskan di artikel part-3.
Source code ada di sini.

Published by Gadael Sedubun

Developer

One thought on “asp.net core MVC login menggunakan custom database. Part-2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: