Implement JWT On Django Rest

Pada tutorial sebelumnya kita sudah mempelajari tentang

selanjutnya kali ini kita akan mengimplementasikan JWT pada Django Rest Framework

install jwt pada django :
pip install djangorestframework-jwt
tambahkan pada setting.py script di bawah ini untuk membuat screet key dan token expired
SECRET_KEY = "12345"
EXPIRY_TIME = datetime.timedelta(seconds=20)
JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=20),  # Token expires * seconds after being issued
    'JWT_ALLOW_REFRESH': True,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(seconds=120),  # Token can be refreshed up to * seconds after being issued
 }

 

buat function untuk encode dan decode JWT
def get_token(request):
    username =request.GET.get('username')
    password = request.GET.get('password')
    if username and password is not None:
        payload = {
            'username': username,
            'password':password,
            'exp':datetime.utcnow() + settings.EXPIRY_TIME
        }
        token = jwt.encode(payload, settings.SECRET_KEY, algorithm='HS256')
        token =str(token).replace("b'","")
        token = str(token).replace("'", "")
        token= {'token':token}
        return HttpResponse(
            json.dumps(token)
        )
    else:
        return HttpResponse(
            json.dumps({'Error': "Invalid credentials"}),
            status=400
        )
def get_verivy_token(request):
    token =request.GET.get('token')
    try:
        payload = jwt.decode(token, settings.SECRET_KEY, algorithm='HS256')
        return HttpResponse(
            json.dumps(payload),
            status=200
        )
 
    except jwt.ExpiredSignature:
        return HttpResponse(json.dumps({'Error': "Token is invalid"}))
    except:
        return HttpResponse(json.dumps({'Error': "Token DoesNotExist"}))
good luck ….!

Encode Decode JWT on Python

Generate JWT Token

  • Define secret key
  • Example using pyjwt
import jwt
 token = jwt.encode({'user_id': 1}, '12345', algorithm='HS256')
 token      b'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxfQ.0X_1nSfbSETzHhcoeywtv6zXXlQd13M3d0-su89rfvM'
  • Here, 12345 is considered as secret key and HS256 is the algorithm we are using.

Example of Verifying Token

# Assume token is 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxfQ.0X_1nSfbSETzHhcoeywtv6zXXlQd13M3d0-su89rfvM'
 
jwt.decode(token, '12345', algorithms=['HS256'])
  {'user_id': 1}


  • Here, 12345 is secret key.

 

good luck …!

JSON Web Token (JWT)

Definisi

JSON Web Token atau lebih dikenal dengan JWT yang mana JWT ini adalah sebuah token berbentuk string panjang dengan character random.  JWT digunakan untuk melakukan sistem Autentikasi dan Pertukaran Informasi. Umumnya JWT digunakan untuk melakukan login.

JSON Web Token Sebagai Token Based Authentication system

Tidak seperti otentikasi berbasis sesi, sistem otentikasi berbasis Token membutuhkan beban server yang sangat sedikit. Dalam sistem otentikasi berbasis sesi, pemeliharaan penyimpanan sesi memerlukan pengolahan dan penyimpanan. Sedangkan sistem otentikasi Token, tidak diperlukan penyimpanan sesi di sisi server. Keindahan menggunakan JWT sebagai token otentikasi adalah kesederhanaannya. Setelah token dibuat, system akan mengotentikasi pengguna tanpa menyentuh database lagi. Token dapat dibuang saat kadaluwarsa dari waktu ke waktu yang disebutkan dalam token itu sendiri. JWT adalah self contained token yang memiliki otentikasi, kadaluwarsa informasi waktu dan klaim yang ditetapkan pengguna lainnya yang ditandatangani secara digital.

Kegunaan

JWT dapat digunakan untuk menyediakan sistem Otentikasi Berbasis Token di API ReST Anda. Karena JWT berisi klaim yang diperlukan, dimungkinkan untuk memberi skala API tanpa bergantung pada server Authentication.

Structure JWT

– Header terdiri dari Algoritma HS256, merupakan default dari JWT.

sample :


– Payloadnya sebagai infomasi atau data yang ingin kita kirimkan ke user.

sample:


– Verify Signature adalah hasil dari Hash atau gabungan dari isi encode Header dan Payloadnya lalu ditambahkan kode screet key.

sample :

 

referensi : https://jwt.io/

good luck …!

Interface Cursor Already Closed on Nginx

Python Django

Saat kamu menggunakan raw query pada django dengan database postgres dan kamu menemukan pesan error “Interface Cursor Already Closed”. kamu perlu membuat Try … Exception, pesan error tersebut di karenakan akses koneksi ke database terputus dan pid uwsgi tidak mampu mereload koneksi ke database postgres. solusi simplenya lihat contoh di bawah ini

from django.db import connections
from django.db.utils import InterfaceError
cursor = connections['default'].cursor()
 
def dictfetchall(cursor):
    "Return all rows from a cursor as a dict"
    columns = [col[0] for col in cursor.description]
    return [
        dict(zip(columns, row))
        for row in cursor.fetchall()
        ]
try:
    cursor.execute("""select * from ean_expedia_properties""")
    all_list = dictfetchall(cursor)    
except InterfaceError:
    cr = connections['default'].cursor()
    cr.execute("""select * from ean_expedia_properties""")
    all_list = dictfetchall(cr)
 
print(all_list)

 

good luck !

A collection of mongodb tutorials

mongodb

MongoDB  adalah sistem basis data berorentasi dokumen lintas platform. Diklasifikasikan sebagai basis data “NoSQL“, MongoDB menghindari struktur basis data relasional tabel berbasis tradisional yang mendukung JSON seperti dokumen dengan skema dinamis (MongoDB menyebutnya sebagai format BSON), membuat integrasi data dalam beberapa jenis aplikasi lebih mudah dan lebih cepat. Dirilis di bawah kombinasi dari GNU Affero General Public License dan Lisensi Apache (wikipedia)

di bawah ini beberapa link tutorial untuk belajar mongodb

Tuorial Point

merupakan situs berbagi tutotial yang bisa jadi tujuan utama belajar mongodb. tutorial point menyajikan tutorial dasar mongodb dengan sangat baik sehingga sangat pas untuk yang mau belajar mongodb

linkhttps://www.tutorialspoint.com/mongodb/index.htm

 

W3resource

selain tutorial point, w3resource juga membagi pengetahuan tentang database mongodb secara gratis.

link : http://www.w3resource.com/mongodb/nosql.php

 

Docs Mongodb

merupakan hal yang paling di referensikan bagi kamu yang mau mempelajari mongodb dan mengupas habis tentang apa itu mongodb

link : https://docs.mongodb.com/manual/

 

Python Mongodb

di sini kamu akan di kenalkan dengan python, dari proses instalasi sampai cara mengintegrasikan mongodb dan python

linkhttp://api.mongodb.com/python/current/tutorial.html

 

good luck …….!