- Back to Home »
- bahan kuliah , java »
- Include dan Forward 03_Membuat Filter Authentikasi
Tuesday, 4 June 2013
Sebuah
filter adalah sebuah object yang melaksanakan tugas penfilteran pada saat
me-request resource (servlet atau static content), atau juga saat me-respon
dari resource, atau juga kedua-duanya.
Filter
melaksanakan penfilteran dalam fungsi doFilter. Setiap filter memiliki
akses ke objek FilterConfig dari ini dapat memperoleh
parameter-parameter inisialisasi, sebuah referensi ke ServletContext yang
mana bisa digunakan, sebagai contoh, untuk me-load sumber daya dibutuhkan
tugas-tugas pen-filteran.
Filter
atau komponen dapat menjamin hanya user yang terotorisasi dapat mengakases.
Untuk melindungi kita harus mengembangkan aplikasi kita agar tidak percaya pada
kerahasiaan yang memberi access control. Pada masalah file permission.
Dari
aplikasi login sebelumnya, akan kita modifikasi sedikit. Setelah user berhasil
login, maka user akan mampu mengakses URL /admin/index.jsp
Jika
belum login maka tidak diperbolehkan mengakses URL /admin. Proses ini akan
ditangani oleh Filter Authentikasi.
Langkah-langkah
adalah sebagai berikut :
· Buat Source
Packages baru klik kanan : new java packages ketik nama (contoh jeni3.servlet.filter).
· Dalam package itu buat class
Filter dengan nama AuthenticationFilter yang mengextends interface
Filter. Berikut kode lengkapnya :
package
jeni3.servlet.filter;
import java.io.*;
import javax.servlet.*;
import
javax.servlet.http.*;
public class
AuthenticationFilter implements Filter{
private FilterConfig
config;
public void
init(FilterConfig filterConfig) throws ServletException {
this.config =
filterConfig;
} public void
doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
response.setContentType("text/html;enCoding=UTF-8");
PrintWriter out =
response.getWriter(); HttpSession session =
((HttpServletRequest)request).getSession(false);
if
(session.getAttribute("user")!= null){
chain.doFilter(request,
response);
}else{
out.println("<font
color='red'>You are not allowed to access this page. Please <b>log
in</b> <a href='../login.html'>here</a></a>");
out.close();
}
} public void destroy()
{
this.config = null;
}
}
·
Isikan mapping filter
sebelum mapping servlet,
Kodenya
sebagai berikut :
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>jeni3.servlet.filter.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
·
Selanjutnya pada Web Pages, buat folder dengan nama admin.
·
Dalam folder admin itu buat file index.jsp dengan
kode seperti berikut :
<%@page
contentType="text/html"%>
<%@page
pageEncoding="UTF-8"%>
<!DOCTYPE HTML
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<met
a
http-equiv="Content-Type" content="text/html;
charset=UTF-8"> <title>Admin Page</title>
</head>
<body>
<h1>Admin
Page</h1>
<%
if
(session.getAttribute("user") != null)
out.println("Welcome<b>"+session.getAttribute("user")+"</b><br/>");
%>
This page is
Admin Page
<br/>
<a
href="../logout">Logout</a>
</body>
</html>
<br/>
<a
href="./admin">Admin Page</a>
·
Untuk memudahkan akses ke /admin, tambahkan link dalam file Web
Pages/index.jsp.
<br/>
<a href
="./admin">Admin
Page</a>
·
Kemudian klik Run Project