লগইন (প্রমাণীকরণ) অনুরোধের জন্য আমার কোন পদ্ধতিটি ব্যবহার করা উচিত?


93

আমি জানতে চাই যে লগইন অনুরোধ করার সময় আমার কোন HTTP পদ্ধতিটি ব্যবহার করা উচিত এবং কেন? যেহেতু এই অনুরোধটি সার্ভারে একটি অবজেক্ট (একটি ব্যবহারকারী সেশন) তৈরি করে, তাই আমি মনে করি এটি পোস্ট হওয়া উচিত, আপনি কী ভাবেন? তবে যেহেতু লগইন অনুরোধটি আদর্শবান হওয়া উচিত, এটি পুট হতে পারে, তাই না?

লগআউট অনুরোধের জন্য একই প্রশ্ন, আমি কী মুছে ফেলা পদ্ধতিটি ব্যবহার করব?

উত্তর:


77

যদি আপনার লগইন অনুরোধটি কোনও ব্যবহারকারীর নাম এবং পাসওয়ার্ড সরবরাহকারীর মাধ্যমে হয় তবে একটি পোষ্টই পছন্দনীয়, কারণ URL- এর পরিবর্তে এইচটিটিপি বার্তাগুলির বিবরণ প্রেরণ করা হবে। যদিও এটি আপনি এখনও https এর মাধ্যমে এনক্রিপ্ট করছেন না তা সত্ত্বেও সরল পাঠ্য প্রেরণ করা হবে।

এইচটিটিপি মুছে ফেলা পদ্ধতিটি সার্ভারের কিছু মুছতে অনুরোধ। আমি মনে করি না যে মেমোরির ব্যবহারকারী সেশনে একটি মুছে ফেলা আসলেই এটির উদ্দেশ্য; আরও এটি ব্যবহারকারী রেকর্ড মুছে ফেলার জন্য for সুতরাং সম্ভাব্যভাবে লগআউটটি কেবলমাত্র একটি জিইটি যেমন www.yoursite.com/logout হতে পারে।


4
লগইন অনুরোধ সম্পর্কিত, আমি আমার প্রশ্নে কিছু যুক্ত করে বলেছিলাম এটি পুট হতে পারে, আমি জিইটি নিয়ে দ্বিধা করছি না। বিস্তারিত উত্তরের জন্য +1
গ্রেগ টায়ার

4
ঠিক আছে - PUT সত্যিই আমার মনে হয় এমন সার্ভারে কিছু তৈরি করছে। সুতরাং একটি আরামদায়ক অর্থে আমি অনুমান করি যে কোনও নতুন ব্যবহারকারী তৈরি করা হলে আপনি এটিই ব্যবহার করতে পারেন। এবং আপনার নির্দিষ্ট করা URL- এ ব্যবহারকারী তৈরি করা উচিত। যাইহোক, এমন কোনও কিছুর জন্য যা সত্যিই কোনও HTTP সেশনের মতো ক্ষণস্থায়ী, তারপরে আমি পোস্টের মাধ্যমে লগ ইন করব।
প্ল্যানেজোনস

আমি মনে করি যে এইচটিএসপি সেশনটি ক্ষণস্থায়ী তা আপনার বিষয়টিকে তোলে। আপনি যেমন বলেছিলেন তেমন করতে যাচ্ছি, ধন্যবাদ।
গ্রেগ টায়ার

16
আমি একমত নই যে লোগুটটি জিইটি হওয়া উচিত কারণ কেবলমাত্র "www.yoursite.com/logout" হিসাবে src বৈশিষ্ট্যযুক্ত চিত্র ট্যাগের সাথে কোনও ব্যবহারকারী ইমেল প্রেরণ করে সেই ব্যবহারকারীকে লগ আউট করে।
ভিতাউতাস বাটকাস

4
জিইটি খুব বেশি অর্থবহ হয় না। : এই অন্য একটি ইনপুট এখানে পাওয়া যাবে stackoverflow.com/questions/3521290/logout-get-or-post
thasmo

37

আমি বিশ্বাস করি যে আপনি লগিন এবং লগইট পদ্ধতিগুলিকে বেসিক সিআরডি অপারেশনগুলি তৈরি করুন এবং মুছে ফেলুন te যেহেতু আপনি SESSION নামে একটি নতুন সংস্থান তৈরি করছেন এবং লগ আউট করার সময় এটি ধ্বংস করছেন:

  1. পোস্ট / লগইন - সেশন তৈরি করে
  2. মোছা / লগআউট - সেশনটি ধ্বংস করে

আমি কখনই জিইটি হিসাবে লগআউট করবো না কারণ আইএমজি ট্যাগ বা ইমেলের কোনও লিঙ্ক উপস্থিত রয়েছে এমন ওয়েবসাইটের লিঙ্কের মাধ্যমেই কেবল যে কেউ আক্রমণ করতে পারে। ( <img src="youtsite.com/logout" />)

পিএস দীর্ঘ সময় আমি ভাবছিলাম যে আপনি কীভাবে একটি বিশ্রামযুক্ত লগইন / লগআউট তৈরি করবেন এবং এটি সত্যই সহজ হয়েছে, আপনি যেমনটি বর্ণনা করেছেন ঠিক তেমনই করুন: ব্যবহার করুন / সেশন / শেষ পয়েন্টটি তৈরি করুন এবং মুছে দিন এবং আপনি ঠিক আছেন। আপনি কোনও উপায়ে বা অন্য কোনওভাবে সেশন আপডেট করতে চাইলে আপনি আপডেটও ব্যবহার করতে পারেন ...


4
আধুনিক ব্রাউজার সরঞ্জামগুলির সাথে জিইটি অনুরোধ হিসাবে একটি মুছে ফেলা অনুরোধ করা প্রায় সহজ, যার মধ্যে কিছু ঠিক ব্রাউজারে উপলব্ধ যেমন ব্রাউজার কনসোল থেকে সরাসরি এক্সএইচআর অনুরোধ জারি করা। তবুও আপত্তিযুক্ত কারণ আপনি শব্দার্থবিজ্ঞানের কথা বলেছেন, যা গুরুত্বপূর্ণ, পাশাপাশি ডেটাবেস।
ট্রাইসিস

6

আরআরটি গাইড এবং সুপারিশের ভিত্তিতে আমার সমাধানটি এখানে দেওয়া হয়েছে:

প্রবেশ করুন - একটি সংস্থান তৈরি করুন

অনুরোধ:

POST => https://example.com/sessions/

BODY => {'login': 'login@example.com', 'password': '123456'}

প্রতিক্রিয়া:

http status code 201 (Created)

{'token': '761b69db-ace4-49cd-84cb-4550be231e8f'}

প্রস্থান - একটি উত্স মুছুন

অনুরোধ:

DELETE => https://example.com/sessions/761b69db-ace4-49cd-84cb-4550be231e8f/

প্রতিক্রিয়া:

http status code 204 (No Content)

2

লগ আউট করার পদ্ধতি সম্পর্কে:

স্প্রিং (জাভা ফ্রেমওয়ার্ক) ডকুমেন্টেশনে, তারা জানিয়েছে যে একটি পোষ্ট অনুরোধটিকে অগ্রাধিকার দেওয়া হয়েছে, যেহেতু একটি জিইটি আপনাকে সিএসআরএফ (ক্রস-সাইট অনুরোধ জালিয়াতি) এর জন্য ঝুঁকিপূর্ণ করে তোলে এবং ব্যবহারকারী লগ আউট হতে পারে।

সিএসআরএফ যুক্ত করা কেবলমাত্র HTTP পোস্ট ব্যবহার করার জন্য লগআউটফিল্টার আপডেট করবে update এটি নিশ্চিত করে যে লগ আউটয়ের জন্য একটি সিএসআরএফ টোকেন প্রয়োজন এবং কোনও দূষিত ব্যবহারকারী আপনার ব্যবহারকারীদের জোর করে লগ আউট করতে পারে না।

দেখুন: https://docs.spring.io/spring-security/site/docs/current/references/html/web-app-security.html#csrf-logout

লগ ইন করতে পোষ্টও ব্যবহার করা উচিত (দেহটি এনক্রিপ্ট করা যায়, অন্যান্য উত্তরগুলি দেখুন)।


0

লগইন অনুরোধের জন্য আমাদের পোষ্ট পদ্ধতিটি ব্যবহার করা উচিত। কারণ আমাদের লগইন ডেটা সুরক্ষিত যা সুরক্ষার প্রয়োজন। POST পদ্ধতি ব্যবহার করার সময় ডেটা বান্ডলে সার্ভারে প্রেরণ করা হয়। তবে জিইটি পদ্ধতিতে ডেটা সার্ভারে প্রেরণ করা হয় তারপরে ইউআরএল অনুরোধ সহ ইউআরএল অনুরোধ যা প্রত্যেকের কাছে দেখা হবে।

সুতরাং সুরক্ষিত প্রমাণীকরণ এবং অনুমোদনের প্রক্রিয়ার জন্য আমাদের পোষ্ট পদ্ধতিটি ব্যবহার করা উচিত।

আমি আশা করি এই সমাধানটি আপনাকে সহায়তা করবে।

ধন্যবাদ


0

লগইন করার জন্য আমি পোষ্ট ব্যবহার করি, নীচে আমার লগিন পদ্ধতির জন্য কোডটি আমি এক্সপ্রেস এবং মঙ্গুজ সহ নোডেজ ব্যবহার করেছি

your router.js
     const express = require("express");
     const router = express.Router();

     router.post("/login", login);

your controller.js
     export.login = async(req, res) => {
         //find the user based on email
         const {email, password} = req.body; 

           try{
                const user =  awaitUser.findOne({email});
                if(user==null) 
                 return res.status(400).json({err : "User with 
                         email doesnot exists.Please signup"});
          }
           catch(error){
                 return res.status(500).json({err : 
                                     error.message});
               }

         //IF EVERYTHING GOES FINE, ASSIGN YOUR TOKEN
          make sure you have JWT installed 
         const token = jwt.sign({_id: user._id}, YOUR_SECRET_KEY);

         res.cookie('t');

         const {_id, name, email} = user;
         return res.json({token, user : {_id, email, name}});



     }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.