مشاهده نسخه کامل
: وصل شدن به دیتابیس مستقل
سلام
دوستان من همیشه مزاحم میشم در سایت و وقتتون میگیرم
این بار بدرقم بن بست خوردیم.
اول خواستم در MVC قضیه Login/Register رو پیاده کنم. دیدم به این راحتی ها نیست.
گفتم فعلا همان پروژه Internet App رو در MVC4 رو ویرایش کنم . تا بعد یک بلایی سرش بیاریم و منتقلش کنیم در پروژه اصلی که قالب و وضعیتش فرق داره.
ظاهرا این پروژه داره از sql server لوکال واقع در ویژوال استدیو استفاده میکنه که فایل دیتابیس موجود در پوشه app_data خود پروژه هست.
من نتوسنتم از طریق خود ویژوال استدیو این فایل رو پیدا کنم .
میخواهم یک بلایی سر این بیاریم که دیتابیس مستقل در sql server داشته باشم. تا با EF عمل خواندن و نوشتن و .. انجام دهم.
یعنی این دیتابیس رو کنسل کنیم و با entity framework هدایت کنم پروژه رو به سمت دیتابیس مستقل.
با EF در همین Generate from database و عمل خواندن و نوشتن و .. بلدم کار کنم. مشکل حذف دیتابیس داخلی ویژوال استدیو و اتصال پروژه به دیتابیس بیرون هست.
:n03:
بعد سوال دیگه این هست که من یک Area برای ادمین درست میکنم و فقط ادمین به یک سری صفحه ها دسترسی داشته باشه
باید نقش Role رو پیاده سازی کنیم.
یعنی یک فیلد بزاریم توی دیتابیس اگر مقدارش True بود . این ادمین هست و اجازه ورود بهش بدیم؟
کلافه شدم...
سلام
اول خواستم در MVC قضیه Login/Register رو پیاده کنم. دیدم به این راحتی ها نیست
از قضا، این مورد با گذشته فرق چندانی نکرده
Register که ساده است و Login هم اگر Role نخواهید در حد چند خط کد قابل انجام است.
به طور نمونه در یک رویکرد کوچک تحقیقاتی، میتوانید مدیر سایت را از روی نام کاربری اش (Admin,Administrator) شناسایی کنید.
در این شرایط در کد Login و پس از اطمینان از صحت User,Pass تابع System.Web.Security.FormsAuthentication.RedirectFr omLoginPage را اجرا کنید و در بالای کنترلر Area تان [Authorize(Users = "Admin")] را قرار دهید تا دسترسی به کنترلر مورد نظر فقط از طریق تک نام کاربری Admin میسر باشد.
باید نقش Role رو پیاده سازی کنیم...
اگر بخواهید مفهوم Role داشته باشید تا بتوانید به افراد متعدد نقش هایی را داده و سلب کنید، شاید داشتن یک [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] کمکی کوچک ایده بدی نباشد.
حال اینکه دیتابیس را چطور میسازید و سیستم امنیتی تان چقدر گسترده یا کوچک خواهد بود، بحث دیگری است ولی در یک رویکرد بسیار ساده میتوانید نیم نگاهی به مثال زیر داشته باشید.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این پروزه MVC نیست، ولی [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ای برای پیاده سازی Role دارد که برای استفاده در MVC نیاز به حتی یک خط تغییر هم ندارد!
یعنی [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] را با رعایت دیتابیس تان میتوانید کپی کنید ولی بطور طبیعی دیگر WebPage نخواهید داشت و برای محدود کردن دسترسی به فقط یک Role خاص هم میتوانید از همان خصیصه Authorize بالای Controller یا Action تان استفاده کنید.
میخواهم یک بلایی سر این بیاریم که دیتابیس مستقل در sql server داشته باشم. تا با EF عمل خواندن و نوشتن و .. انجام دهم.
یعنی این دیتابیس رو کنسل کنیم و با entity framework هدایت کنم پروژه رو به سمت دیتابیس مستقل.
این موارد که دیگر نباید برایتان مشکلی داشته باشد....
شما دیتابیس را هر کجا و هر طور میخواهید بسازید در نهایت ConnectionString پروژه را درست و صحیح برای دسترسی به دیتابیس دلخواه تان تنظیم کنید.
دسترسی و استفاده از دیتابیس دلخواه چیزی بیش از ConnectionString ندارد.
(البته اگر فقط VS را نصب کرده باشید بدیهی است که برای کار با دیتابیس دلخواه تان باید نرم افزار مستقل آن را هم (مانند SQLServer یا Oracle و...) را نصب کنید، انشاا... SQLServer را که نصب کردید ...؟؟!)
موفق باشید.
سلام
من نتیجه گزارش کار رو کامل در تاپیک خواهم گذاشت.
من با توجه به راهنمایی های شما توانستم لاگین و ثبت نام را با موفقیت انجام دهم./
اما مشکل اینجاست که فرضا کاربری لاگین کرده و میخواهد برای مدیریت سایت یک نظر بفرستد. یا سوال مطرح کند.
خوب این کاربر الان مشخصاتی براش خودش دارد. به قول معروف یک رکورد از جدول یوزرز رو صاحب هست.
حال ما نیاز داریم که حداقل ID این کاربر را بدانیم که از سمت View با تگ hidden بفرستیم سمت اکشن مربوط ه تا بتونیم عملیات ذخیره سازی رو انجام بدیم.
یا در همان اکشن از Membership استفاده کنیم و اطلاعات کاربر بکشیم بیرون
من برای راحتی کار لاگین و رجیستر رو با استفاده از System.Web.Security پیاده کردم و از کلاس Membership بهره بردم.
با این دستور ای دی کاربری که نظر رو ارسال کرده و لاگین شده کشیدم بیرون در همان اکشن
فکر کنم تا ما طراحی سایت یاد بگیریم و ریزه کاری ها در بیاریم حداقل3 سال طول میکشه
البته من طراحی سایت تازه شروع کردم و توقع بیجا ادم نباید داشته باشه (امیدواری به خود):n13:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
حال ما نیاز داریم که حداقل ID این کاربر را بدانیم
همانطور که در پست بعدی تان اشاره کردیدف مهم ترین دستور در این مسیر System.Web.[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] است که نام کاربری فرد جاری که کدهای شما طبق request او در حال اجرا است را بازپس خواهد داد، با داشتن Username میتوانید سایر اطلاعات کاربر مربوطه را هم استخراج کنید.
سلام
وقتت بخیر وانشالله سلامت باشید
سوال مهم اینجاست که برچه مبنا این دستور username رو می کشه بیرون؟ بر اساس کوکی ذخیره شده در مرورگر کاربر که خودش قبلش نوشته داخلش؟ یا session?
سلام مجدد
بله از کوکی استفاده خواهد شد.
چون پروتکل HTTP برای درخواست های متعدد بر اصول disconnect و connect مجدد بنا گذاشته شده (یعنی یک request ارسال شده و یک response دریافت میشود، ختم ارتباط تا کلیک بعدی!) تنها راه تشخیص کاربر بین تماس های متعدد و منقطع پروتکل HTTP ، کوکی است.
کوکی مانند آن است که یک کد پیگیری به فرد بدهید تا بتوانید در تماس های آتی کار او را ادامه دهید.
مکانیزم Session ها هم بر همین الگو استوار است.
فرآیند تشخیص هویت:
اطلاعات لازم جهت احراز هویت در قالب یک شی به نام Ticket بندی شده و پس از Encrypt در یک Cookie ذخیره میشود، این کوکی ها در طی هر request از طرف مرورگر در قالب Header در پروتکل HTTP ارسال خواهد شد، و در سرور به کمک یک [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] این کوکی پردازش شده و پس از Decrypt مجدد شی User پر خواهد شد و کاربر احراز هویت خواهد شد که این فرآیند طی هر request تکرار خواهد شد.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.