Multiple Replace On Python

Bagaimana untuk mereplace sebuah list ?

kita asumsikan mempunyai sebuah bilangan integer 123456, lalu kita ingin mengubahnya menjadi 1,2,3,4,5,6

untuk mengubah bilangan di atas ubah kedalam bentuk list kemudian ubah list ke string agar kita bisa menggunakan fungsi replace pada python.

 

Example

rating = "123456"
lst = list(rating)
cut = {"[": "", "'": "", "]": ""}
for x,y in cut.items():
   lst = str(lst).replace(x,y)
hotel_start = lst
print(hotel_start)

good lucks ….!

 

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 !