so i m trying to access a protected html page using jwt authentication, so far i have done everything i could think up of, I will provide my python-flask code as well as my javascript code to handle the frontend requests
from flask import Flask, render_template, request, redirect, url_for, jsonify, session
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity
from flask_bcrypt import Bcrypt
from flask_sqlalchemy import SQLAlchemy
import pymysql
from datetime import datetime, timedelta
app = Flask(name)
app.secret_key = '' # Set a secure secret key
JWT Configuration
app.config['JWT_SECRET_KEY'] = ''
app.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(hours=1)
app.config['JWT_TOKEN_LOCATION'] = ['headers']
app.config['JWT_HEADER_NAME'] = 'Authorization'
app.config['JWT_HEADER_TYPE'] = 'Bearer'
jwt = JWTManager(app)
Updated login route
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
password = request.json.get('password')
app.logger.debug(f"Login attempt for user: {username}")
user = User.query.filter_by(username=username).first()
if not user or not bcrypt.check_password_hash(user.password, password):
return jsonify({"msg": "Invalid username or password!"}), 401
# Create access token
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token, msg="Login successful!"), 200
Updated dashboard route
@app.route('/dashboard')
@jwt_required()
def dashboard():
current_user = get_jwt_identity()
user = User.query.filter_by(username=current_user).first()
if not user:
return jsonify({"msg": "User not found"}), 404
return render_template('logged_in.html', user=user)