احراز هویت و چگونگی ارسال پیامک در phoenix

سلام.
من دارم یه ایده در مورد یه نوع شبکه اجتماعی رو طراحی میکنم که قراره متن‌باز ارائه بشه، تو این پروژه کاربرها باید طوری وارد بشن که امکان داشتن چند حساب برای یه نفر حداقل بشه، مثلا ورود با شماره موبایل طوریه که سخت میشه یه نفر چند تا حساب بسازه. سوال من اینه که شما راه حل بهتری میشناسید؟ OAuth و راه حلایی که به ایمیل مربوطن به نظر من خیلی خوب نیستن چون راحت میشه با اونها حساب‌های زیادی ساخت.
سعی کردم یه پنل پیامک (داخلی یا خارجی) پیدا کنم که بشه ازش استفاده کرد و پیامک احراز هویت (به صورت رایگان) به کاربرا فرستاد ولی چیزی پیدا نکردم، شما سرویسی در این رابطه میشناسید که در مدتی که دارم برنامه رو توسعه میدم ازش استفاده کنم؟
برای مدیریت خود این احراز هویت‌ها توی الیکسیر و فینکس هم خیلی جستجو کردم که یه پکیج یا راه حل آموزش داده‌شده‌ای پیدا کنم که کار رو راحت بشه انجام داد ولی متاسفانه هیچ ابزار و آموزشی پیدا نکردم که فایده داشته باشه، اینکه چطور کاربر شماره‌ش رو وارد کنه بعد کد فرستاده بشه بعد کد رو وارد کنه و تایید بشه و… . البته نوشتن این سخت نیست، فقط دنبال راه حل راحت‌تر میگشتم :sweat_smile:، شما راه حلی سراغ دارید؟
متشکر

پیامک در ایران مشکلات زیادی داره. اگر کسی پیامکشو بسته باشه و افراد بخاطر پیامک های زیاد خیلی هاشو نمی بینند و یا براشون اصلا ارسال نمی شه. پس حتما باید خط شما از بیرون ایران باشد یا اگر در داخل هست مثل اینکه راهی داره باید سفته بزارید … خط رو به خط خدماتی فکر کنم تغییر بدید.


و مشکل بعدی اگر یک نفر چندین ایمیل بسازه چه مشکلی ایجاد می کنه که شما باید انقدر هزینه بکنید؟ شبکه های اجتماعی بزرگ بی خیال این هزینه شدند. و خود احراز هویت با موبایل نیز مشکلات امنیتی خودشو داره مخصوصا اگر پیگیری از طرف دولت ها بشه !!

به هر صورت موردی گه شما می فرمایید نباید مشکلی باشه

شما قراره از گادرین برای ایجاد توکن استفاده کنید

دو مطلب بالا رو بخونید . بعد حالا قراره هست در دیتابیس یک شماره موبایل یونیک درست بکنید به همراه پسورد.

حالا قراره هست برای پسورد از کتابخانه های comeonin و bcrypt_elixir استفاده کنید.

وقتی طرف پسورد و شماره موبایلشو درست وارد کرد براش یک کدی ارسال بشه این کد می تونید در ردیس ذخیره سازی کنید کتابخانه redix بعد طرف باید دوباره اون کد رو برای شما بفرسته که بهش ایمیل یا پیامک شده.
برای ارسال پیامک یا در کل ارسال درخواست http می تونید از httpoison استفاده کنید.

اگر کد پیامک با شماره موبایل طرف و انقضای مورد نظر یکی بود در ردیس پس به طرف باید توکن داده بشه با گاردین که بالا لینک دادم حال اون طرف با توکن هرجای سایت می تونه بره و توکن نیز باز خودش باید در ردیس ذخیره بشه و انقضا داشته باشه

نمونه کد ارسال پیامک بر اساس متغییر هایی که خود سایت ارسال کننده یا خدمات دهنده نیاز داره

defmodule Extera.Sms.Send do
  def send_sms do
    number_list = ["93", "93"]
    req_body = URI.encode_query(
      %{
        "uname" => "test",
        "pass" => "test",
        "from" => "+985",
        "message" => "این یک تست می باشد",
        "to" => Jason.encode!(number_list),
        "op" => "send"
      }
    )
    HTTPoison.post(
      "http://test.com/services.jspd",
      req_body,
      %{"Content-Type" => "application/x-www-form-urlencoded"}
    )
  end
end

دیدن این آموزش نیز خالی از لطف نیست

1 Like

یه سوال دیگه، در مورد Google authenticator و Microsoft authenticator و مثل اینها چطور؟ اونها هزینه چند حسابی رو به حداقل میرسونن؟ چون با جستجویی که کردم به نظر میاد صرفا با دستگاه موبایل کار میکنن و این یعنی هر موبایل یه حساب که این بهتر از سیمکارت میشه :thinking:
ردیس هم نکته جالبی بود، ممنونم از پاسختون.

ماکروسافت رو نمی دونم ولی Google authenticator خوب این روی هر دستگاه موبایل وصل می شه که معمولا سیستم های برای امنیت بیشتر یا اضافه کردن آپشن این خاصیت رو هم به کاربر می دند که یک واسط فعال سازی که در بزرگترین شرکت های روز هست رو اضافه کنند . در حقیقت امنیت لاگین رو می اندازند روی گردن این شرکت ها.

اینکه بازم می شه دور زد و چندین حساب باز کرد رو اطلاعی ندارم ولی خوب تا جای مناسبی رو جلوی چند حساب کاربر روی می گیره. البته راه های انسانی و همینطور مواردی مثل کنترل آیپی و … یا پارامتر های دیگر هم می تونه تا حدودی جلوشو بگیره ولی به نظرم باز شما مشکل خواهید داشت .

ببنید شما به نظرم حساس شدید و هنوز به سوال من پاسخ ندادید که اگر یک نفر چندین حساب باز کند چه چیزی قرار هست به خطر بیفتد که انقدر می خواهید هزینه کنید ؟

این برنامه شبیه discourse هست؛ فرض کنید توی همین سایت یه نفر با چند تا اکانت وارد بشه که یه بحث خاصی رو به نفع خودش جلو ببره و اون بحث از صلاحیت خارج بشه، این دلیل اینه که افراد نباید بتونن چند تا حساب بسازن. این مسئله توی اون برنامه مسئله مهمیه :thinking:

من شرکت هایی رو می شناسم که ۱۰۰ شماره برای مصرف یک روزشونه!! بالاخره شما اطلاعاتی از هر کاربر نمایش می دید که نشون می ده مثلا تازه واره یا نه و کی ثبت نام کرده در همین انجمن اگر بحث تبلیغات پیش بیاد مشخصه اون فرد کی ثبت نام کرده و چندتا پست داره !!

و تا حدودی هم نیرو انسانی در کار هست و همینطور هر نفر هم می تونه برای ریکاوری یا … هم به صورت آپشن اضافه شماره موبایل اضافه کنه ! نه هدف اصلی شماره موبایل باشه . اکانت هاشو می تونه متصل کنه مثل فیسبوک یا اینستاگرام یا هر شبکه اجتماعی که این اجازه رو بده که پرووایدر شما باشه

به نظر این موضوع اگر خیلی مهمه شماره تلفن هم حل کنندش نیست مخصوصا در مصرف داخل ایران

1 Like

درسته
احتمالا باید بیشتر درگیر چنین جنبه‌هایی بشم
ممنون.