Artikel ini menjelaskan cara membuat sebuah sesi login user tetap di ASP.NET.Ā Sebelum masuk ke kedalaman artikel ini, Anda harus terbiasa dengan bentuk otentikasi di ASP.NET. Konfigurasi bentuk otentikasi berada dalam file web.config yang memiliki fragmen konfigurasi file dengan nilai-nilai yang ditetapkan.
|
<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" protection="All" timeout="1" name=".USERLOGINCONTROLAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/Home/Index" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/></authentication> |
Nilai default dijelaskan sebagai berikut:
1. loginUrl : pointĀ ke halaman logon kustom aplikasi Anda . Anda harus menempatkan halaman logon dalam folder yang memerlukan Secure Sockets Layer ( SSL ) . Ini akan membantu memastikan integritas kredensial ketika mereka lulus dari browser ke Web server .
2.Ā protection :Ā diset ke All untuk menentukan privasi dan integritas untuk tiket bentuk authentication. Hal ini menyebabkan tiket authenticationĀ yang akan dienkripsi menggunakan algoritma tertentu pada elemen machineKey Ā dan akan disign menggunakan algoritma hashing yang juga ditentukan pada elemen machineKey .
3.Ā timeout :Ā digunakan untuk menentukan seumur hidup terbatas untuk sesi otentikasi bentuk . Nilai default adalah 30 menit. Jika cookie authenticationĀ dikeluarkan , atribut timeout juga digunakan untuk mengatur masa cookie persisten .
4.Ā name dan path diatur ke nilai-nilai yang didefinisikan dalam file konfigurasi aplikasi .
5.Ā requireSSL diatur ke false. Konfigurasi ini berarti bahwa cookies authenticationĀ dapat ditransmisikan melalui saluran yang tidak terenkripsi SSL. Jika Anda khawatir tentang pembajakan sesi, Anda harus mempertimbangkan pengaturan requireSSL menjadi true.
6. slidingExpiration diatur ke true untuk menegakkan sliding session lifetime. Ini berarti bahwa batas waktu sesi secara berkala ulang selama pengguna tetap aktif di situs.
7. defaultUrl diatur ke halaman Default.aspx untuk aplikasi.
8. cookieless diatur ke UseDeviceProfile untuk menentukan bahwa cookie penggunaan aplikasi untuk semua browser yang mendukung cookie. Jika browser yang tidak mendukung cookies mengakses situs, kemudian membentuk paketĀ authenticationĀ tiket otentikasi pada URL.
9. enableCrossAppRedirects diatur ke false untuk menunjukkan bahwa bentuk otentikasi tidak mendukung pemrosesan otomatis dari tiket yang lewat di antara aplikasi pada string atau sebagai bagian dari bentuk POST.
FormsAuthentication.SetAuthCookie Method
Metode ini menciptakan tiket authentication untuk nama pengguna disediakan dan ditambahkan ke koleksi cookies respon, atau URL jika Anda menggunakan cookieless authentications. Overload pertama fungsi ini, memiliki dua parameter:
- username: Nama pengguna dikonfirmasiĀ
- createPersisntentCookie: True untuk membuat cookie yang tetap (disimpan di seluruh sesi browser), jika tidak, false.Ā Metode ini menambahkan cookie yang tetap untuk browser dengan berakhir waktu yang ditetapkan dalam parameterĀ “timeOut” dengan nama dan path diatur dalam “name” dan “path” parameter. Pengguna akan secara otomatis log out setelah cookie expired. Jadi sesi login pengguna tergantung pada berakhir bentuk tiket authenticationĀ yang disimpan dalam cookie browser. Di sini, saya akan membuat sebuah sesi login pengguna tetap menggunakan teknik ini.
Cookie Helper
Fungsi kelas ini adalah untuk menambah tiket bentuk authenticationĀ untuk koleksi cookie browser dengan berakhirnya waktu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
public sealed class CookieHelper { private HttpRequestBase _request; private HttpResponseBase _response; public CookieHelper(HttpRequestBase request, HttpResponseBase response) { _request = request; _response = response; } //[DebuggerStepThrough()] public void SetLoginCookie(string userName,string password,bool isPermanentCookie) { if (_response != null) { if (isPermanentCookie) { FormsAuthenticationTicket userAuthTicket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.MaxValue, true, password, FormsAuthentication.FormsCookiePath); string encUserAuthTicket = FormsAuthentication.Encrypt(userAuthTicket); HttpCookie userAuthCookie = new HttpCookie (FormsAuthentication.FormsCookieName, encUserAuthTicket); if (userAuthTicket.IsPersistent) userAuthCookie.Expires = userAuthTicket.Expiration; userAuthCookie.Path = FormsAuthentication.FormsCookiePath; _response.Cookies.Add(userAuthCookie); } else { FormsAuthentication.SetAuthCookie(userName, isPermanentCookie); } } } } |
Fungsi ini digunakan dalam halaman login atau kontrol pada klik tombol login. Fungsi berikut ini ditulis di kelas AccountController. Fungsi ini memvalidasi login pengguna dan kemudian menambahkan tiket
authenticationĀ bentuk permanen ke browser.
|
private bool Login(string userName, string password,bool rememberMe) { if (Membership.ValidateUser(userName, password)) { CookieHelper newCookieHelper = new CookieHelper(HttpContext.Request,HttpContext.Response); newCookieHelper.SetLoginCookie(userName, password, rememberMe); return true; } else { return false; } } |
Jadi dengan cara ini, Anda dapat mengontrol tiket bentuk otentikasi untuk mengontrol sesi login pengguna.
JaringanHosting.comĀ adalah providerĀ ASP.NETĀ dan Windows hosting No #1 di Indonesia sesuai dengan rekomendasi dari pihak Microsoft. Microsoft memberikan rekomendasi ini berdasarkan pada beberapa persyaratan utama, yaitu: WebMatrix, WebDeploy, Visual Studio 2012,ASP.NET 4.5,Ā ASP.NETĀ MVC 4.0, Silverlight 5 and Visual Studio Lightswitch.Untuk keterangan lanjutan, silahkan klik disini!