https://teguhth.blogspot.com/2026/02/sample-access-database-mariadb-via.html
Kalau tujuan Anda adalah setiap kali membuka:
http://10.10.10.90:8888/pembelian_front.cfm
maka pengguna harus login terlebih dahulu, saya sarankan menggunakan Session Login. Cara ini lebih sederhana dibanding CFLOGIN dan umum dipakai di Lu
1. Struktur file
root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# ls -lh Application.cfc login.cfm logout.cfm pembelian_front.cfm pembelian_api.cfm
-rw-r--r-- 1 root root 744 Jul 10 15:06 Application.cfc
-rw-r--r-- 1 root root 1.1K Jul 10 14:57 login.cfm
-rw-r--r-- 1 root root 76 Jul 10 14:57 logout.cfm
-rw-r--r-- 1 root root 296 Jul 10 15:07 pembelian_api.cfm
-rw-r--r-- 1 root root 912 Jul 10 15:09 pembelian_front.cfm
[root@teguhth-all ROOT]#
2. Buat Application.cfc
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat Application.cfc
<cfcomponent output="false">
<cfset this.name = "PembelianApp">
<cfset this.sessionManagement = true>
<cfset this.sessionTimeout = CreateTimeSpan(0,8,0,0)>
<cffunction name="onRequestStart" returntype="boolean">
<cfargument name="targetPage">
<!-- halaman yang boleh diakses tanpa login -->
<cfset allowPage = ListFindNoCase(
"login.cfm",
ListLast(arguments.targetPage,"/")
)>
<cfif NOT allowPage>
<cfif NOT StructKeyExists(session,"login")>
<cflocation
url="login.cfm"
addtoken="false">
</cfif>
</cfif>
<cfreturn true>
</cffunction>
</cfcomponent>
[root@teguhth-all ROOT]#
3. Buat login.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat login.cfm
<cfsetting showdebugoutput="false">
<cfif StructKeyExists(form,"username")>
<cfif
form.username EQ "admin"
AND
form.password EQ "123456">
<cfset session.login = true>
<cfset session.username = form.username>
<cflocation
url="pembelian_front.cfm"
addtoken="false">
<cfelse>
<cfset pesan="Username / Password Salah">
</cfif>
</cfif>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<style>
body{
font-family:Arial;
background:#f5f5f5;
}
.login{
width:350px;
margin:100px auto;
padding:20px;
border:1px solid #ddd;
background:white;
}
input{
width:100%;
padding:8px;
margin-bottom:10px;
}
button{
padding:10px;
width:100%;
}
</style>
</head>
<body>
<div class="login">
<h2>Login</h2>
<cfif IsDefined("pesan")>
<font color="red">
<cfoutput>#pesan#</cfoutput>
</font>
<br><br>
</cfif>
<form method="post">
Username
<input
type="text"
name="username">
Password
<input
type="password"
name="password">
<button>
Login
</button>
</form>
</div>
</body>
</html>
[root@teguhth-all ROOT]#
4. Buat logout.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat logout.cfm
<cfset StructClear(session)>
<cflocation
url="login.cfm"
addtoken="false">
[root@teguhth-all ROOT]#
5. Ubah pembelian_front.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat pembelian_front.cfm
<cfquery
name="qPembelian"
datasource="dbteguhth">
SELECT *
FROM pembelian
</cfquery>
<!DOCTYPE html>
<html>
<head>
<title>Data Pembelian</title>
<style>
body{
font-family:Arial;
}
table{
border-collapse:collapse;
width:100%;
}
th,td{
border:1px solid #ccc;
padding:8px;
}
th{
background:#eee;
}
.menu{
margin-bottom:20px;
}
</style>
</head>
<body>
<div class="menu">
Selamat Datang
<b>
<cfoutput>#session.username#</cfoutput>
</b>
|
<a href="logout.cfm">
Logout
</a>
</div>
<h2>Data Pembelian</h2>
<table>
<tr>
<th>Kode Pembelian</th>
<th>Kode Barang</th>
<th>Kode Customer</th>
<th>Tanggal</th>
<th>Jumlah</th>
</tr>
<cfoutput query="qPembelian">
<tr>
<td>#KODE_PEMBELIAN#</td>
<td>#KODE_BARANG#</td>
<td>#KODE_CUSTOMER#</td>
<td>#dateFormat(TANGGAL_PEMBELIAN,"dd-mm-yyyy")#</td>
<td>#JUMLAH_PEMBELIAN#</td>
</tr>
</cfoutput>
</table>
</body>
</html>
[root@teguhth-all ROOT]#
6. pembelian_api.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat pembelian_api.cfm
<cfquery name="qPembelian" datasource="dbteguhth">
SELECT
KODE_PEMBELIAN,
KODE_BARANG,
KODE_CUSTOMER,
TANGGAL_PEMBELIAN,
JUMLAH_PEMBELIAN
FROM pembelian
</cfquery>
<cfcontent type="application/json">
<cfoutput>#serializeJSON(qPembelian)#</cfoutput>
[root@teguhth-all ROOT]#
Jika API juga ingin diamankan
Hapus pembelian_api.cfm dari daftar pengecualian di Application.cfc:
<cfset allowPage = ListFindNoCase(
"login.cfm",
ListLast(arguments.targetPage,"/")
)>
Dengan perubahan itu, baik:
http://10.10.10.90:8888/pembelian_front.cfm
http://10.10.10.90:8888/pembelian_api.cfm
akan sama-sama meminta login terlebih dahulu sebelum dapat diakses. Ini adalah pendekatan yang lebih aman jika API tidak memang ditujukan untuk diakses secara publik.
Kalau tujuan Anda adalah setiap kali membuka:
http://10.10.10.90:8888/pembelian_front.cfm
maka pengguna harus login terlebih dahulu, saya sarankan menggunakan Session Login. Cara ini lebih sederhana dibanding CFLOGIN dan umum dipakai di Lu
1. Struktur file
root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# ls -lh Application.cfc login.cfm logout.cfm pembelian_front.cfm pembelian_api.cfm
-rw-r--r-- 1 root root 744 Jul 10 15:06 Application.cfc
-rw-r--r-- 1 root root 1.1K Jul 10 14:57 login.cfm
-rw-r--r-- 1 root root 76 Jul 10 14:57 logout.cfm
-rw-r--r-- 1 root root 296 Jul 10 15:07 pembelian_api.cfm
-rw-r--r-- 1 root root 912 Jul 10 15:09 pembelian_front.cfm
[root@teguhth-all ROOT]#
2. Buat Application.cfc
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat Application.cfc
<cfcomponent output="false">
<cfset this.name = "PembelianApp">
<cfset this.sessionManagement = true>
<cfset this.sessionTimeout = CreateTimeSpan(0,8,0,0)>
<cffunction name="onRequestStart" returntype="boolean">
<cfargument name="targetPage">
<!-- halaman yang boleh diakses tanpa login -->
<cfset allowPage = ListFindNoCase(
"login.cfm",
ListLast(arguments.targetPage,"/")
)>
<cfif NOT allowPage>
<cfif NOT StructKeyExists(session,"login")>
<cflocation
url="login.cfm"
addtoken="false">
</cfif>
</cfif>
<cfreturn true>
</cffunction>
</cfcomponent>
[root@teguhth-all ROOT]#
3. Buat login.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat login.cfm
<cfsetting showdebugoutput="false">
<cfif StructKeyExists(form,"username")>
<cfif
form.username EQ "admin"
AND
form.password EQ "123456">
<cfset session.login = true>
<cfset session.username = form.username>
<cflocation
url="pembelian_front.cfm"
addtoken="false">
<cfelse>
<cfset pesan="Username / Password Salah">
</cfif>
</cfif>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<style>
body{
font-family:Arial;
background:#f5f5f5;
}
.login{
width:350px;
margin:100px auto;
padding:20px;
border:1px solid #ddd;
background:white;
}
input{
width:100%;
padding:8px;
margin-bottom:10px;
}
button{
padding:10px;
width:100%;
}
</style>
</head>
<body>
<div class="login">
<h2>Login</h2>
<cfif IsDefined("pesan")>
<font color="red">
<cfoutput>#pesan#</cfoutput>
</font>
<br><br>
</cfif>
<form method="post">
Username
<input
type="text"
name="username">
Password
<input
type="password"
name="password">
<button>
Login
</button>
</form>
</div>
</body>
</html>
[root@teguhth-all ROOT]#
4. Buat logout.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat logout.cfm
<cfset StructClear(session)>
<cflocation
url="login.cfm"
addtoken="false">
[root@teguhth-all ROOT]#
5. Ubah pembelian_front.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat pembelian_front.cfm
<cfquery
name="qPembelian"
datasource="dbteguhth">
SELECT *
FROM pembelian
</cfquery>
<!DOCTYPE html>
<html>
<head>
<title>Data Pembelian</title>
<style>
body{
font-family:Arial;
}
table{
border-collapse:collapse;
width:100%;
}
th,td{
border:1px solid #ccc;
padding:8px;
}
th{
background:#eee;
}
.menu{
margin-bottom:20px;
}
</style>
</head>
<body>
<div class="menu">
Selamat Datang
<b>
<cfoutput>#session.username#</cfoutput>
</b>
|
<a href="logout.cfm">
Logout
</a>
</div>
<h2>Data Pembelian</h2>
<table>
<tr>
<th>Kode Pembelian</th>
<th>Kode Barang</th>
<th>Kode Customer</th>
<th>Tanggal</th>
<th>Jumlah</th>
</tr>
<cfoutput query="qPembelian">
<tr>
<td>#KODE_PEMBELIAN#</td>
<td>#KODE_BARANG#</td>
<td>#KODE_CUSTOMER#</td>
<td>#dateFormat(TANGGAL_PEMBELIAN,"dd-mm-yyyy")#</td>
<td>#JUMLAH_PEMBELIAN#</td>
</tr>
</cfoutput>
</table>
</body>
</html>
[root@teguhth-all ROOT]#
6. pembelian_api.cfm
[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat pembelian_api.cfm
<cfquery name="qPembelian" datasource="dbteguhth">
SELECT
KODE_PEMBELIAN,
KODE_BARANG,
KODE_CUSTOMER,
TANGGAL_PEMBELIAN,
JUMLAH_PEMBELIAN
FROM pembelian
</cfquery>
<cfcontent type="application/json">
<cfoutput>#serializeJSON(qPembelian)#</cfoutput>
[root@teguhth-all ROOT]#
Jika API juga ingin diamankan
Hapus pembelian_api.cfm dari daftar pengecualian di Application.cfc:
<cfset allowPage = ListFindNoCase(
"login.cfm",
ListLast(arguments.targetPage,"/")
)>
Dengan perubahan itu, baik:
http://10.10.10.90:8888/pembelian_front.cfm
http://10.10.10.90:8888/pembelian_api.cfm
akan sama-sama meminta login terlebih dahulu sebelum dapat diakses. Ini adalah pendekatan yang lebih aman jika API tidak memang ditujukan untuk diakses secara publik.





No comments:
Post a Comment