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.
1 2 3 4 5 6 7 8 9 10 11 12 |
<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); } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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; } } |
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!