হ্যান্ডেলিং অথ ইন নেক্সট জে এস

বন্ধুরা, আজকে আমরা একেবারে মার্ভেল ইউনিভার্সের সিকিউরিটি গার্ড হতে যাচ্ছি! আসলে Authentication আর Authorization শিখতে গেলে মনে হয় যেন কোনো সুপারহিরো মুভির প্লটের মতোই কিছু শিখছি! হ্যাঁ, আমরা আজ শিখব কিভাবে Next.js দিয়ে আমাদের অ্যাপ্লিকেশনের....

আরিফ আলমাছ

আরিফ আলমাছ

ওয়েব ডেভেলপার

📅১ সেপ্টেম্বর, ২০২৪

🎭 Authentication এবং Authorization: এরা কারা?

প্রথমে একটু পরিচয় করিয়ে দিই। Authentication আর Authorization শুনতে এক রকম লাগলেও, এরা কিন্তু পুরোই আলাদা চরিত্র।

🛡️ কেন Authentication আর Authorization এত গুরুত্বপূর্ণ?

ভাবুন তো, আপনার অ্যাপ একটা ব্যাংকের মতো। কেউ যদি Authentication ছাড়া লগইন করতে পারে, তবে তো যে কেউ ঢুকে আপনার সব টাকা নিয়ে পালাবে! আর Authorization ছাড়া, সবাই ব্যাংকের ভল্টে ঢুকে যাবে যেভাবে ইচ্ছা তেমন করে। তাই, এই দুইটা টপিক ঠিকঠাক শিখে রাখা একজন ডেভেলপারের জন্য মাস্ট!

🧙‍♂️ Next.js দিয়ে Authentication: শুরুতেই পরিচয় পরীক্ষা!

Next.js এ Authentication সেটআপ করা অনেকটা RPG গেমের প্রথম কাস্টল ডিফেন্স মিশনের মতোই! আমরা সাধারণত নিচের কয়েকটি স্টেপে Authentication সেটআপ করি:

  1. Client-Side Authentication: এখানে আমরা ফ্রন্ট-এন্ড থেকে API তে ইউজার ডেটা পাঠাই এবং চেক করি ইউজার সঠিক কিনা। এটা ব্যাটম্যানের মতো জাস্ট নিজের মুখোশ খুলে দেখানো। তবে এভাবে খুব একটা নিরাপদ নয়!

  2. Server-Side Authentication: এখানে কাজটা হচ্ছে সার্ভারের দায়িত্বে। আমরা ইউজারের তথ্য সার্ভারে যাচাই করি। এটা অনেকটা কেভিন ফেইগি (মার্ভেল সিনেম্যাটিক ইউনিভার্সের প্রোডিউসার) নিজে এসে চেক করছে, তুমি আসলেই মার্ভেলের মুভিতে অভিনয় করেছো কিনা!

  3. Token-Based Authentication: এখানে আমরা JWT (JSON Web Token) ব্যবহার করি। ইউজার যখন লগইন করে, তখন আমরা তাকে একটা টোকেন দেই। পরে সেই টোকেন নিয়ে সে অ্যাপের বিভিন্ন জায়গায় ঢুকতে পারে। এটা অনেকটা এভেঞ্জার্সের মেম্বারশিপ কার্ডের মতো। যেটা দিয়ে শুধু এভেঞ্জার্স মেম্বাররাই S.H.I.E.L.D.-এ ঢুকতে পারে।

🔒 Next.js দিয়ে Authorization: প্রবেশাধিকার নিয়ন্ত্রণ!

Next.js এ Authorization সেটআপ করার সময় আমাদের অনেক বেশি শক্ত থাকতে হয়। Authorization বলতে আমরা বুঝি, ঠিক কোন কোন ইউজার কি কি করতে পারবে। আর এর জন্য আমাদের দরকার middleware, প্রোটেক্টেড রুট এবং Access Control Mechanism। যেমন:

  1. Protected Routes: আমাদের অ্যাপের কিছু রুট আমরা প্রোটেক্ট করে রাখি। যেনো শুধু নির্দিষ্ট কিছু ইউজারই সেখানে ঢুকতে পারে। ধরুন, S.H.I.E.L.D-এর কনফারেন্স রুমের দরজা, যেখানে ফিল কুলসন ছাড়া কেউ ঢুকতে পারে না!

  2. Role-Based Access Control (RBAC): এতে করে আমরা ইউজারদের বিভিন্ন রোল সেট করতে পারি। যেমন ধরুন, অ্যাপের অ্যাডমিন, এডিটর, ভিজিটর ইত্যাদি। যেকোনো রোলের ইউজারই তাদের নির্দিষ্ট অনুমোদিত কাজগুলো করতে পারবে। এভেঞ্জার্স টিমে যেমন কেউ ফ্লাই করতে পারে (আয়রন ম্যান), কেউ হ্যাকিং করতে পারে (ব্ল্যাক উইডো), আবার কেউ আগুন নেভাতে পারে (ক্যাপ্টেন আমেরিকা)!

  3. Middleware ব্যবহার করে প্রোটেকশন: এখানে আমরা middleware ব্যবহার করে রিকোয়েস্ট আসার আগেই চেক করে ফেলি ইউজার কি অনুমোদিত কিনা। যেন কেউই চুরি করে অ্যাপের ভেতরে ঢুকতে না পারে।

🛠️ Next.js দিয়ে Authentication & Authorization এর কোড উদাহরণ:

// pages/api/auth/[...nextauth].js
import NextAuth from "next-auth";
import Providers from "next-auth/providers";
 
export default NextAuth({
  providers: [
    Providers.Credentials({
      async authorize(credentials) {
        // ইউজার যাচাই করতে কাস্টম লজিক
        const user = { id: 1, name: "Jon Doe" };
 
        if (user) {
          return user;
        } else {
          throw new Error("Invalid credentials");
        }
      },
    }),
  ],
  // সেশন ব্যবস্থাপনা
  session: {
    jwt: true,
  },
  callbacks: {
    async jwt(token, user) {
      if (user) {
        token.id = user.id;
      }
      return token;
    },
    async session(session, token) {
      session.user.id = token.id;
      return session;
    },
  },
});

🦸‍♂️ উপসংহার: নিরাপত্তা ঠিক থাক, হ্যাকাররা দুরে থাক!

Authentication আর Authorization নিয়ে চিন্তা করতে গিয়ে ঘাবড়ানোর কিছু নেই। ঠিকভাবে ব্যবহার করতে পারলে এগুলো আমাদের অ্যাপ্লিকেশনের নিরাপত্তার "ব্যাটম্যান" হয়ে উঠবে! আর আপনি যদি কোনো মুভির ভিলেনদের মতো আপনার অ্যাপ সুরক্ষিত করতে চান, তাহলে এই টপিকগুলোতে এক্সপার্ট হওয়া মাস্ট।

তাহলে আর কী? হাতে চা নিয়ে বসে যান, কীবোর্ডে ঠকঠক আওয়াজ তুলুন আর Next.js দিয়ে তৈরি করে ফেলুন আপনার সিকিউর নেটওয়ার্ক! Happy Coding! 🛡️💻