Ways to verify the identity of a user using an external authentication service

One of my microservices deals with user login and registration. Upon making a request to localhost:8080 with the body

{ "username": "test", "password":"test"}
, I receive an authentication token like this:
{ "token":"asdfsadfasdf..." }
.

I need to utilize this token in another microservice to authenticate the user before sending a request to my endpoint. The code snippet for this scenario looks like:

import { Injectable } from "@nestjs/common";
import { AuthGuard } from "@nestjs/passport";

@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {}
    @Get()
    @UseGuards(JwtAuthGuard)
    private async getHello(): Promise<void> {
        console.log("Hello world");
    }
@Module({
  imports: [
        JwtModule.register({
      secret: 'secretKey',
    }),
    JwtStrategy,
    PassportModule.register({ defaultStrategy: 'jwt' })
],
  providers: [AppService],
  controllers: [AppController]
})
export class AppModule{}

Upon launching my Get request, I encountered an error message:

[Nest] 10472   - 04.05.2021, 17:14:00   [ExceptionsHandler] Unknown authentication strategy "jwt" +3677ms
Error: Unknown authentication strategy "jwt"

Regarding the authentication strategy, the following block of code is used:


@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
    constructor() {
        super({
          jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
          secretOrKey: 'secret',
        });
    }
}

I'm seeking guidance on what went wrong with setting up my authentication strategy and why it might not be working correctly.

Thank you for any assistance!

Answer №1

Ensure that your JwtStrategy is relocated from the imports section to the providers array. Remember, providers should always be placed in the appropriate array and not within imports which are reserved for modules only.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

How to use Typescript to find the length of an array consisting of either strings or

I am trying to determine the length of a string or array, stored in a variable with the data type var stepData : string | string[]. Sometimes I receive a single string value, and other times I may receive an array of strings. I need the length of the array ...

What is the process of sending a post request using axios to insert data into a database in React

I am currently working on a login system using mysql, axios, express, and react. The database connections are functioning properly, but I am encountering errors specifically with these two posts, displaying messages like "ERR_CONNECTION_REFUSED" and UNCAUG ...

Why does the control skip the onreadystatechange function for the ajax object?

Just beginning my journey into web-development. Recently, I encountered an issue with a signup page I created that involves asynchronous calls to php. Upon debugging, I noticed that the onreadystatechange function is being completely skipped over. Any assi ...

Using React js to transform objects into arrays for useState

Hey there! I'm currently working on a webshop demo project for my portfolio. I've encountered an issue while trying to fetch data from commerce.js. The data is in the form of objects, which are causing problems when I try to map them. I've a ...

What is the mechanism behind image pasting in Firefox's imgur integration?

Start by launching an image editing software and make a copy of any desired image. Avoid copying directly from a web browser as I will explain the reason later on. Navigate to "http://imgur.com" using Firefox. To paste the copied image, simply press Ctrl+V ...

Using Router.back in Next.js triggers a complete page refresh

I am working on a page called pages/conversations/[id].tsx, and here is the code: import Router, { useRouter } from 'next/router' export default function ConversationPage() { const router = useRouter() ... return ( <View ...

I have developed a function that adds up price values, but for some reason it is always lagging one step behind

I am facing an issue with my React container that has add and subtract functions. These functions are triggered whenever a user clicks on '+' or '-' spans, to calculate the total 'price' of three different 'products' ...

Is there a way to toggle a command for a specific discord server rather than enabling it for all servers where the bot is present?

I've been working on a Discord bot with multiple commands managed by a custom command handler. However, I'm facing an issue where enabling a command affects all servers the bot is in. How can I implement a system using message.guild.id to toggle ...

Avoid the automatic scrolling of a datatable to the top when clicking on a button within a column using jQuery

Is there a method to stop the datatable from automatically scrolling to the top when any of the buttons is clicked? ...

A function that retrieves the empty values from an array and returns undefined if there

After undergoing a time-consuming process, the sample below shows that the array values are returned empty. function myFunction() { let myArray = []; let pastArray = [1, 2, 6, 7, 8, 1, 9, 6, 0] pastArray.forEach(item =>{ setTimeout(function(){ myA ...

Automatically calculate the product of two columns in a gridview

Greetings, I am currently working on a project that involves calculating values from two textboxes within a gridview and displaying the result in a third textbox using JavaScript. The calculation should occur as soon as a value is entered into the second ...

"Observed Issue: Ionic2 Array Fails to Update in HTML Display

I am struggling with updating an array in Ionic2 and Angular2. I have tried updating it on the front end but it's not working, even though it updates perfectly on the backend (ts) as confirmed by checking the console. I need assistance with this. Her ...

Steer clear of downloading images while on your smartphone

As I develop a responsive website, I encounter the challenge of optimizing image loading based on viewport size. While using CSS to hide images not needed for certain viewports can reduce display clutter, it does not prevent those images from being downloa ...

A numerical input field that removes non-numeric characters without removing existing numbers?

Currently, I have implemented the following code: <input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')"> This code restricts users from entering anything other than numbers into a field on my webpage. However, I hav ...

Should tokenized email addresses be avoided as URL parameters in customer communication?

Currently, I am facing an issue with users signing up using a different email than the one they used during checkout. This is causing their data to be stored in our backend by the email address provided during sign-up. However, I do not want to restrict si ...

Node.js PDFKit Measurement Units

Can you clarify the measurement unit used in PDFKit (Node.js)? For example, we have: doc.text(20, 20, 'Message') What exactly does 20(x) and 20(x) represent? Are they measured in centimeters, millimeters, inches, or something else? Can I conver ...

You have exceeded the maximum number of Facebook application requests allowed (#4)

My goal is to create a dynamic "social wall" on a website by pulling posts from a specific Facebook page using the Facebook API. Instead of utilizing any Facebook SDK, I am making cURL calls with the URLs directly. To fetch the posts, I rely on Javascript ...

Having trouble retrieving all JSON properties

I am facing an issue with my json structure where I am unable to access certain properties. I can only access the main properties like type, properties, and so on within that hierarchy level. However, I cannot seem to access icon, iconURL, or title. The da ...

Using TypeScript to destructure arrays within a parameter list

As I delve into TypeScript, my focus is on mastering array destructuring within the arguments list. While object destructuring is feasible using this method: let foo = function({firstname, lastname}){...} foo({ firstname: 'ralph', lastname ...

Passing a single item from a list as a prop in Vue.js

Imagine having the following set of information in data: data: { todos: [ { id: 1, title: "Learn Python" }, { id: 2, title: "Learn JS" }, { id: 3, title: "Create WebApp" } ] } Now, I aim to send only the item with an id of 2 t ...