تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 7 از 7

نام تاپيک: وصل شدن به دیتابیس مستقل

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض وصل شدن به دیتابیس مستقل

    سلام
    دوستان من همیشه مزاحم میشم در سایت و وقتتون میگیرم
    این بار بدرقم بن بست خوردیم.
    اول خواستم در MVC قضیه Login/Register رو پیاده کنم. دیدم به این راحتی ها نیست.
    گفتم فعلا همان پروژه Internet App رو در MVC4 رو ویرایش کنم . تا بعد یک بلایی سرش بیاریم و منتقلش کنیم در پروژه اصلی که قالب و وضعیتش فرق داره.
    ظاهرا این پروژه داره از sql server لوکال واقع در ویژوال استدیو استفاده میکنه که فایل دیتابیس موجود در پوشه app_data خود پروژه هست.
    من نتوسنتم از طریق خود ویژوال استدیو این فایل رو پیدا کنم .
    میخواهم یک بلایی سر این بیاریم که دیتابیس مستقل در sql server داشته باشم. تا با EF عمل خواندن و نوشتن و .. انجام دهم.
    یعنی این دیتابیس رو کنسل کنیم و با entity framework هدایت کنم پروژه رو به سمت دیتابیس مستقل.
    با EF در همین Generate from database و عمل خواندن و نوشتن و .. بلدم کار کنم. مشکل حذف دیتابیس داخلی ویژوال استدیو و اتصال پروژه به دیتابیس بیرون هست.



    بعد سوال دیگه این هست که من یک Area برای ادمین درست میکنم و فقط ادمین به یک سری صفحه ها دسترسی داشته باشه
    باید نقش Role رو پیاده سازی کنیم.
    یعنی یک فیلد بزاریم توی دیتابیس اگر مقدارش True بود . این ادمین هست و اجازه ورود بهش بدیم؟
    کلافه شدم...
    Last edited by Life24; 29-08-2014 at 15:21.

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اول خواستم در MVC قضیه Login/Register رو پیاده کنم. دیدم به این راحتی ها نیست
    از قضا، این مورد با گذشته فرق چندانی نکرده
    Register که ساده است و Login هم اگر Role نخواهید در حد چند خط کد قابل انجام است.
    به طور نمونه در یک رویکرد کوچک تحقیقاتی، میتوانید مدیر سایت را از روی نام کاربری اش (Admin,Administrator) شناسایی کنید.
    در این شرایط در کد Login و پس از اطمینان از صحت User,Pass تابع System.Web.Security.FormsAuthentication.RedirectFr omLoginPage را اجرا کنید و در بالای کنترلر Area تان [Authorize(Users = "Admin")] را قرار دهید تا دسترسی به کنترلر مورد نظر فقط از طریق تک نام کاربری Admin میسر باشد.

    باید نقش Role رو پیاده سازی کنیم...
    اگر بخواهید مفهوم Role داشته باشید تا بتوانید به افراد متعدد نقش هایی را داده و سلب کنید، شاید داشتن یک HttpModule کمکی کوچک ایده بدی نباشد.
    حال اینکه دیتابیس را چطور میسازید و سیستم امنیتی تان چقدر گسترده یا کوچک خواهد بود، بحث دیگری است ولی در یک رویکرد بسیار ساده میتوانید نیم نگاهی به مثال زیر داشته باشید.
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    این پروزه MVC نیست، ولی HttpModule ای برای پیاده سازی Role دارد که برای استفاده در MVC نیاز به حتی یک خط تغییر هم ندارد!
    یعنی HttpModule را با رعایت دیتابیس تان میتوانید کپی کنید ولی بطور طبیعی دیگر WebPage نخواهید داشت و برای محدود کردن دسترسی به فقط یک Role خاص هم میتوانید از همان خصیصه Authorize بالای Controller یا Action تان استفاده کنید.
    میخواهم یک بلایی سر این بیاریم که دیتابیس مستقل در sql server داشته باشم. تا با EF عمل خواندن و نوشتن و .. انجام دهم.
    یعنی این دیتابیس رو کنسل کنیم و با entity framework هدایت کنم پروژه رو به سمت دیتابیس مستقل.
    این موارد که دیگر نباید برایتان مشکلی داشته باشد....
    شما دیتابیس را هر کجا و هر طور میخواهید بسازید در نهایت ConnectionString پروژه را درست و صحیح برای دسترسی به دیتابیس دلخواه تان تنظیم کنید.
    دسترسی و استفاده از دیتابیس دلخواه چیزی بیش از ConnectionString ندارد.
    (البته اگر فقط VS را نصب کرده باشید بدیهی است که برای کار با دیتابیس دلخواه تان باید نرم افزار مستقل آن را هم (مانند SQLServer یا Oracle و...) را نصب کنید، انشاا... SQLServer را که نصب کردید ...؟؟!)


    موفق باشید.

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  4. #3
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    سلام
    من نتیجه گزارش کار رو کامل در تاپیک خواهم گذاشت.
    من با توجه به راهنمایی های شما توانستم لاگین و ثبت نام را با موفقیت انجام دهم./
    اما مشکل اینجاست که فرضا کاربری لاگین کرده و میخواهد برای مدیریت سایت یک نظر بفرستد. یا سوال مطرح کند.
    خوب این کاربر الان مشخصاتی براش خودش دارد. به قول معروف یک رکورد از جدول یوزرز رو صاحب هست.
    حال ما نیاز داریم که حداقل ID این کاربر را بدانیم که از سمت View با تگ hidden بفرستیم سمت اکشن مربوط ه تا بتونیم عملیات ذخیره سازی رو انجام بدیم.
    یا در همان اکشن از Membership استفاده کنیم و اطلاعات کاربر بکشیم بیرون
    من برای راحتی کار لاگین و رجیستر رو با استفاده از System.Web.Security پیاده کردم و از کلاس Membership بهره بردم.
    Last edited by Life24; 03-09-2014 at 22:14.

  5. #4
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    با این دستور ای دی کاربری که نظر رو ارسال کرده و لاگین شده کشیدم بیرون در همان اکشن
    فکر کنم تا ما طراحی سایت یاد بگیریم و ریزه کاری ها در بیاریم حداقل3 سال طول میکشه
    البته من طراحی سایت تازه شروع کردم و توقع بیجا ادم نباید داشته باشه (امیدواری به خود)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  6. #5
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    حال ما نیاز داریم که حداقل ID این کاربر را بدانیم
    همانطور که در پست بعدی تان اشاره کردیدف مهم ترین دستور در این مسیر System.Web.HttpContext.Current.User.Identity.Name است که نام کاربری فرد جاری که کدهای شما طبق request او در حال اجرا است را بازپس خواهد داد، با داشتن Username میتوانید سایر اطلاعات کاربر مربوطه را هم استخراج کنید.

  7. #6
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    سلام
    وقتت بخیر وانشالله سلامت باشید
    سوال مهم اینجاست که برچه مبنا این دستور username رو می کشه بیرون؟ بر اساس کوکی ذخیره شده در مرورگر کاربر که خودش قبلش نوشته داخلش؟ یا session?

  8. #7
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام مجدد
    بله از کوکی استفاده خواهد شد.
    چون پروتکل HTTP برای درخواست های متعدد بر اصول disconnect و connect مجدد بنا گذاشته شده (یعنی یک request ارسال شده و یک response دریافت میشود، ختم ارتباط تا کلیک بعدی!) تنها راه تشخیص کاربر بین تماس های متعدد و منقطع پروتکل HTTP ، کوکی است.
    کوکی مانند آن است که یک کد پیگیری به فرد بدهید تا بتوانید در تماس های آتی کار او را ادامه دهید.
    مکانیزم Session ها هم بر همین الگو استوار است.

    فرآیند تشخیص هویت:
    اطلاعات لازم جهت احراز هویت در قالب یک شی به نام Ticket بندی شده و پس از Encrypt در یک Cookie ذخیره میشود، این کوکی ها در طی هر request از طرف مرورگر در قالب Header در پروتکل HTTP ارسال خواهد شد، و در سرور به کمک یک HttpModule این کوکی پردازش شده و پس از Decrypt مجدد شی User پر خواهد شد و کاربر احراز هویت خواهد شد که این فرآیند طی هر request تکرار خواهد شد.

  9. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •