register.json ব্যবহারকারীকে লগইন করে না বা ব্যবহারকারীর সেশন / টোকেন / পাসওয়ার্ড দেয় না


9

আমি এখানে তালিকাভুক্ত করার জন্য অনেক বেশি প্রকরণের চেষ্টা করেছি, তবে মূল বিষয়টি হ'ল আমি পরিষেবাগুলির মাধ্যমে নিবন্ধের পরে ব্যবহারকারীকে তাত্ক্ষণিকভাবে লগ ইন করতে পারি না। আমি কেবলমাত্র পরিষেবাদি 7.x.3.11 সক্ষম করে এবং ড্রুপালগ্যাপ 7.x.1.9 দ্বারা সরবরাহিত ডিফল্ট রিসোর্স সেটিংস সহ একটি নতুন দ্রুপাল 7.33 ইনস্টল করার চেষ্টা করেছি

আমি যখন ড্রুপাল ইন্টারফেস ব্যবহার করে নিবন্ধন করি তখন ব্যবহারকারী তৈরি হয়, সেশনটি খোলা হয় এবং আমি লগ ইন করা আমার প্রোফাইল পৃষ্ঠায় অবতরণ করি।

বনাম

আমি যখন পরিষেবাগুলি শেষ পয়েন্টে কল করি /services/user/register.json, তখন দ্রুপাল অ্যাকাউন্ট তৈরি করে তবে সেশনটি স্থায়ী হয় না। আমার স্ক্রিনশট নীচে দেখুন।

এখানে চিত্র বর্ণনা লিখুন

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

এই প্রশ্নটি কীভাবে গ্লোবাল $ ব্যবহারকারীকে দ্রুপাল ইন্টারফেস এবং পরিষেবাদি মডিউলগুলির মধ্যে আলাদা হতে পারে? লগইনটোবোগান ব্যবহার করে আমার একই সমস্যা বর্ণনা করে।

আমার স্ক্রিনশটে আপনি "লগইন ডিবাগ" নামে একটি ডিবাগ লাইন দেখতে পাবেন। এটি "/sites/all/modules/logintoboggan/logintoboggan.module" এর 333 লাইন থেকে এসেছে যেখানে আমি এই সমস্ত কিছুই চেষ্টা করেও লাভ করি নি ...

function logintoboggan_process_login($account, &$edit, $redirect = array()){
  global $user;

  $user = user_load($account->uid);

//watchdog('login debug', json_encode($account)); 
watchdog('login debug', json_encode($edit));

  //user_login_submit(array(), array('uid' => $account->uid));
  user_login_finalize($edit);

//  $user = user_load($account->uid);
//  $user->token = drupal_get_token('services'); // WE HAVE A TOKEN ALTHOUGH I DOUBT THIS WOULD WORK IN TERMS OF SESSION PERSISTANCE
//  user_login_finalize($edit);
//  module_invoke_all('hook_user_login');
//  module_invoke_all('tripchi_user_login');
//  module_invoke_all('logintoboggan_user_login');

@ ক্লাইভ, এখানে অর্থ প্রদানে সহায়তা করা শর্তের পরিপন্থী?
ইট

এটি @ এলিয়াটায়লার, আমি কেবল একটি মন্তব্য করছি leaving আমরা কেবল এখানে প্রশ্ন এবং উত্তরের বিষয়ে আগ্রহী , অন্য যে কোনও কিছু (অর্থের বিনিময়ে কাজ চাওয়া, টিউটোরিয়ালগুলির লিঙ্ক জিজ্ঞাসা করা, বা মূলত বেশিরভাগ অন্যান্য বিষয় যা সাইটের বাইরে ঘটে) এটি থেকে বিচ্যুতি এবং এমন কিছু বিষয় যা আমরা রক্ষা করি। আমরা সত্যিই যা চাই তা হ'ল একটি ভাল প্রশ্ন (যা আমরা এখানে পেয়েছি, দুর্দান্ত) এবং একটি ভাল উত্তর (যা আশা করি আপনি পাবেন)
ক্লাইভ

আপনি এখানে অভিযোগ করার জন্য আমাকে অনেকবার সাহায্য করেছেন, তবে @ ক্লাইভ। আমি সেই কথোপকথনটিকে অফলাইনে নিয়ে যেতে পারি এবং এটি সমাধান না করেই এই পর্দাটি বিশৃঙ্খলা করতে পারি না। এছাড়াও এখানে, আমার চ্যাট বৈশিষ্ট্যটি ব্যবহার করার খ্যাতিও নেই। আমি স্ট্যাকওভারফ্লো থেকে কিছু বাণিজ্য করতে পারি? এমনকি আমার গিথব লিঙ্কটিও রেপোতে লিঙ্ক করবেন না?
ইট

1
এমনকি নয় :) মোটামুটিভাবে আমরা কোনও সমর্থন ফোরাম নই এবং "প্রশ্ন" বা "উত্তর" নয় এমন কিছুই দ্রুপাল সম্পর্কে জ্ঞানের একটি উচ্চমানের সংগ্রহশালা তৈরির আমাদের মিশনের বিরুদ্ধে যায়। প্রশ্নের উত্তর দেওয়ার জন্য যে কোনও কিছু প্রয়োজন তা নিজেই প্রশ্নে থাকা দরকার, কারণ যদি তা না হয় তবে অফ-সাইট লিঙ্কগুলি মারা যাওয়ার সাথে সাথে প্রশ্নটি অকেজো হয়ে যায় বা সমস্যাটি স্থির হয়ে যায়। নিয়মগুলি নির্বিচারে বা কঠোর মনে হতে পারে তবে স্ট্যাক এক্সচেঞ্জের মডেল দ্বারা এটি বেশ কয়েক বছর ধরে প্রয়োজনীয় প্রমাণিত হয়েছে। যদি আপনি মনে করেন এটি এখানে কেবল Q + A হয়, তবে কখনও কোনও সমস্যা হবে না
ক্লাইভ

চ্যাটিংয়ের জন্য আপনার প্রতিনিধি সম্পর্কে - আপনি এখনই এর খুব কাছাকাছি, এবং আমার সন্দেহ হয় যে এই প্রশ্নটি বেশ ভালভাবে লেখা হয়েছে বলে কিছু উত্সাহ আকর্ষণ করবে। তারা সময় সঙ্গে আসবে। এটি আমার কাছে অন্য যে বিষয়টি উল্লেখ করা উচিত, আমাদের এখানে সময়ের মতো কোনও ধারণা নেই - আমরা বরং প্রশ্নের উত্তর দিতে আরও বেশি সময় দিতাম তবে দ্রুত এবং মৌলিক প্রতিক্রিয়ার চেয়ে উচ্চমানের পদ্ধতিতে। এমন নয় যে আমরা মানুষকে ধীর বা এই জাতীয় কিছু হতে উত্সাহিত করি, তবে আপনার যদি সময়-সংবেদনশীল উপায়ে কোনও কিছু অর্জন করার প্রয়োজন হয় তবে এখানে যে ঘটছে তাতে আপনার বাজি হেজ করা ভাল ধারণা নয়, যেহেতু আমরা এতে মনোনিবেশ করি না
ক্লাইভ

উত্তর:


1

আপনার এই মুহুর্তে কোনও উত্তর প্রয়োজন হবে কিনা তা নিশ্চিত নন (অথবা এটি এমনকি যদি একটিও হয়) তবে মনে হয় আপনার "ভিজিটর কোনও অ্যাকাউন্ট তৈরি করার সময় ইমেল যাচাইকরণের প্রয়োজন আছে" চালু আছে?

আপনার ছবিতে, দ্বিতীয় উইন্ডোতে (যেখানে আপনি drupal_set_message () এর বার্তাটি দেখেন), এটি বলছে যে একটি ইমেল প্রেরণ করা হয়েছিল এবং আপনাকে পূর্ণ বার্তা পেতে নির্দেশাবলী অনুসরণ করতে হবে।

এটি বন্ধ করতে, / অ্যাডমিন / কনফিগার / লোক / অ্যাকাউন্টগুলিতে নেভিগেট করুন এবং কোনও ভিজিটর যখন একটি অ্যাকাউন্ট তৈরি করেন তখন ই-মেইল যাচাইকরণের প্রয়োজনটি চেক করুন।

আপনি যদি ডাটাবেসে ব্যবহারকারীর টেবিলটি লক্ষ্য করেন, স্থিতি কলামটি সক্ষম হওয়ার জন্য একটি 1, অক্ষমদের জন্য 0 দেখানো উচিত (যার অর্থ তিনি ইমেলের লিঙ্কটিতে ক্লিক করেননি)।

আশা করি এটা সাহায্য করবে!


আপনি ডিফল্টরূপে নিবন্ধিত ব্যবহারকারীদের সক্রিয় করা সত্ত্বেও এটি কাজ করে না
মোহাম্মদ গোঁমা

0

এটি আমার পক্ষে ঠিক কাজ করছে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন

global $user;
$username=$data['email'];
$password=$data['pass'];
if ($user->uid) {
    // user is already logged in
    return services_error(t('Already logged in as @user.', array('@user' => $user->name)), 406);
}

// Check if account is active.
if (user_is_blocked($username)) {
    return services_error(t('The username %name has not been activated or is blocked.', array('%name' => $username)), 403);
}

// Emulate drupal native flood control: check for flood condition.
$flood_state = array();
if (variable_get('services_flood_control_enabled', TRUE)) {
    $flood_state = _user_resource_flood_control_precheck($username);
}

// Only authenticate if a flood condition was not detected.
if (empty($flood_state['flood_control_triggered'])) {
    $uid = user_authenticate($username, $password);
}
else {
    $uid = FALSE;
}

// Emulate drupal native flood control: register flood event, and throw error
// if a flood condition was previously detected
if (variable_get('services_flood_control_enabled', TRUE)) {
    $flood_state['uid'] = $uid;
    _user_resource_flood_control_postcheck($flood_state);
}

if ($uid) {
    $user = user_load($uid);
    if ($user->uid) {
        user_login_finalize();

        $return = new stdClass();
        $return->sessid = session_id();
        $return->session_name = session_name();
        $return->token = drupal_get_token('services');
        $account = clone $user;
        services_remove_user_data($account);
        $return->user = $account;

        return $return;
    }
}
watchdog('user', 'Invalid login attempt for %username.', array('%username' => $username));
return services_error(t('Wrong username or password.'), 401);

ব্যবহারকারীর ইমেল আইডি এবং পাসওয়ার্ড পাস করুন তবে এটি প্রয়োজনীয় সমস্ত মান যেমন সেশন আইডি, সেশনের নাম, টোকেন, ব্যবহারকারী ইউডি প্রদান করবে


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