3awny
3awny

Reputation: 351

flask_jwt_extended.exceptions.NoAuthorizationError: Missing Authorization Header

Server-side flask

@project_ns.route('/projects')
class ProjectsResource(Resource):

    @project_ns.marshal_list_with(project_model)
    @jwt_required()
    def get(self):
        """Get all projects """
        user_id = User.query.filter_by(username=get_jwt_identity()).first() # Filter DB by token (username)

        projects=Project.query.filter_by(user_id=user_id)

        #projects = Project.query.all()

        return projects

client-side reactjs

const getAllProjects=()=>{
    const token = localStorage.getItem('REACT_TOKEN_AUTH_KEY');
    console.log(token)


    const requestOptions = {
        method: 'GET',
        headers: {
            'content-type': 'application/json',
            'Authorization': `Bearer ${JSON.parse(token)}`
        },
        body: "Get projects listed"

    }

    fetch('/project/projects', requestOptions)
    .then(res => res.json())
    .then(data => {
        setProjects(data)
    })
    .catch(err => console.log(err))
}

I specified header on the client side and the error still occurs:

flask_jwt_extended.exceptions.NoAuthorizationError: Missing Authorization Header

my flask versions are as follows:

Flask==2.0.1
Flask-Cors==3.0.10
Flask-JWT-Extended==4.2.3
Flask-Migrate==3.1.0
Flask-RESTful==0.3.9
flask-restx==0.5.0
Flask-SQLAlchemy==2.5.1

I have tried many options and the issue is still persisting. Would love to come to a resolution. Thanks in advance!

Upvotes: 0

Views: 776

Answers (1)

Cody Moniz
Cody Moniz

Reputation: 5065

I haven't used these libraries before, but it sounds like it might possibly be an issue with the Flask-RESTful library?

https://stackoverflow.com/a/52102884/2077884

https://github.com/vimalloc/flask-jwt-extended/issues/86#issuecomment-335509456

https://github.com/vimalloc/flask-jwt-extended/issues/86#issuecomment-444983119

If you're not getting a value for console.log(token), I would start there. And maybe check to see if you can decode the token details via https://jwt.io/ to ensure that the value you have for token is valid.

Upvotes: 1

Related Questions