PDA

View Full Version : طراحی membership با sql



ironman
چهارشنبه 16 دی 1388, 11:09 صبح
میخواستم یه جدولی تعریف کنم که بتونم داخل اون اعضا و مدیران سایت رو به همراه تعریف میزان سطح دسترسی ذخیره کنم.(مثل جداول پایگاه داده (app_data) asp membersip) لطفا راهنماییم کنید.

raziee
چهارشنبه 16 دی 1388, 19:46 عصر
خوب چرا از همون جداول استفاده نمیکنید؟
با استفاده از aspnet_regsql.exe میتونید این کار رو انجام بدید
تمام اون جداول در پایگاه داده شما ایجاد خواهد شد.

c#_asp
چهارشنبه 16 دی 1388, 21:52 عصر
خوب چرا از همون جداول استفاده نمیکنید؟
با استفاده از aspnet_regsql.exe میتونید این کار رو انجام بدید
تمام اون جداول در پایگاه داده شما ایجاد خواهد شد.


دوست عزیز آیا می توانیم ما خودمان یک سری فیلد اضافه کنیم

ممنون میشم اگه یک مثال کوچک بزنید چون واقعاً به آن احتیاج دارم

raziee
چهارشنبه 16 دی 1388, 22:16 عصر
آیا می توانیم ما خودمان یک سری فیلد اضافه کنیم

خوب به جداول که میشه فیلد اضفه کرد. اما آخه ...!!!!

اگه اطلاعات اضافی دارید که میخواید برای کاربر ذخیره بشه ساده ترین راه استفاده از Profile هست.
میبینید که در جداولی که براتون میسازه ، جدولی هم با نام [aspnet_Profile] هست که شما میتونید با تنظیم کردن وب کانفیگ از این پروفایل استفاده کنید.
و اینجوری کار میکنه که اگه شما مثلا بخواهید سه فیلد سن ، نام و نام خانوادگی داشته باشید در جدول یه همچین چیزی ذخیره میشه:
در فیلد : [PropertyNames]

Age:S:0:2:FirstName:S:2:7:LastName:S:9:6:
و در فیلد [PropertyValuesString] :

21HosseinRaziee

اما من خودم از این استفاده نمیکنم و اطلاعاتی رو که نیاز دارم در جدولی که خودم ساختم ذخیره میکنم و اون جدول هم یک فیلد [UserId] داره که کلید خارجی به جدول [aspnet_Membership] و یا [aspnet_Users] است.

Behrouz_Rad
پنج شنبه 17 دی 1388, 08:02 صبح
Profile خوب نیست. سربار Serialization و Deserialization اش خیلی زیاده. اسکریپت های SQL Server اش هم که برنامه نویسان مایکروسافت نوشتن اصلاً خوب نوشته نشده و کارایی برنامه رو پایین میاره.

موفق باشید.

raziee
پنج شنبه 17 دی 1388, 10:17 صبح
Profile خوب نیست. سربار Serialization و Deserialization اش خیلی زیاده. اسکریپت های SQL Server اش هم که برنامه نویسان مایکروسافت نوشتن اصلاً خوب نوشته نشده و کارایی برنامه رو پایین میاره.


بهروز جان استفاده از یک جدول و ارتباطش با جداول asp رو تایید میکنید دیگه. حالا بستگی به پیاده سازی برنامه نویس میتونی کاراییش رو افزایش بده(منظورم نوع ایجاد کلاس های ارتباط با بانک هست).

استاد میشه در مورد Serialization و Deserialization توضیح و یا رفرنس مناسبی رو ذکر کنید که تو برنامه نویسیمون سربار اضافی رو برای سرور ایجاد نکنیم!
بعد اینکه استفاده از روشی که شما در گریدود ورژن 7 دادید (که خیلی کمکم کرد) کاملا اصولی هست دیگه اگه به همون صورت کلاس ها رو ایجاد کنیم این سربار رو که میگید به سرور تحمیل نمیکنیم دیگه. از همون شیوه ایجاد کلاس استفاده کنیم یا تو این زمان یک ساله شما شیوه ی بهتری رو پیدا کرید؟
ممنون از لطفتون.

anderson
پنج شنبه 17 دی 1388, 10:21 صبح
سلام به شما دوست عزیز
اگه جستجو کنی هست تو همین فروم
می تونی از MemberShip خود دات نت استفاده کنی یا اینکه از AccessMemberShip که یکی از دوستان تو همین انجمن گذاشته.
اما یه کار دیگه هم می تونی بکنی اینکه بانک اطلاعاتی خودت رو با استفاده از برنامه aspnet_regsql.exe
از مسیر زیر
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
امکانات کاربری و membership رو کامل به بانک اطلاعاتی خودت اضافه کنی.

ironman
جمعه 18 دی 1388, 15:02 عصر
سلام به شما دوست عزیز



اگه جستجو کنی هست تو همین فروم
می تونی از MemberShip خود دات نت استفاده کنی یا اینکه از AccessMemberShip که یکی از دوستان تو همین انجمن گذاشته.
اما یه کار دیگه هم می تونی بکنی اینکه بانک اطلاعاتی خودت رو با استفاده از برنامه aspnet_regsql.exe
از مسیر زیر
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
امکانات کاربری و membership رو کامل به بانک اطلاعاتی خودت اضافه کنی.




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

anderson
جمعه 18 دی 1388, 16:54 عصر
سلامی دوباره
در این روش همون اطلاعات membership رو که asp.net داره کامل به بانک اطلاعاتی شما اضافه می کنه یعنی تمامی جدول ها و ویوها و .. . . به همین سادگی. و اگر تو کانفیگت provider تعریف کردی بایستی نام Connection String خودت رو بهش بدی.
در مورد access هم اون پروژه رو اگه نتونستی پیدا کنی بگو برات بزارم. من هم خودم پیداش نکردم.
که در واقع همین SQl رو به Access تبدیل کرده و خیلی می تونه کمکت کنه.

mohsen_zelzela00
جمعه 18 دی 1388, 18:16 عصر
سلامی دوباره
که در واقع همین SQl رو به Access تبدیل کرده و خیلی می تونه کمکت کنه.
دوست عزیز اگه بزارید ممنون میشم

c#_asp
پنج شنبه 24 دی 1388, 19:35 عصر
خوب به جداول که میشه فیلد اضفه کرد. اما آخه ...!!!!

اگه اطلاعات اضافی دارید که میخواید برای کاربر ذخیره بشه ساده ترین راه استفاده از Profile هست.
میبینید که در جداولی که براتون میسازه ، جدولی هم با نام [aspnet_Profile] هست که شما میتونید با تنظیم کردن وب کانفیگ از این پروفایل استفاده کنید.
و اینجوری کار میکنه که اگه شما مثلا بخواهید سه فیلد سن ، نام و نام خانوادگی داشته باشید در جدول یه همچین چیزی ذخیره میشه:
در فیلد : [PropertyNames]

Age:S:0:2:FirstName:S:2:7:LastName:S:9:6:
و در فیلد [PropertyValuesString] :

21HosseinRaziee

اما من خودم از این استفاده نمیکنم و اطلاعاتی رو که نیاز دارم در جدولی که خودم ساختم ذخیره میکنم و اون جدول هم یک فیلد [UserId] داره که کلید خارجی به جدول [aspnet_Membership] و یا [aspnet_Users] است.

من در سایتی که دارم طراحی می کنم می خواه این اطلاعات را در مورد کاربر سیستم تعریف کنم(با توجه به این که این سایت برای سازمانی خاص طراحی شده است)




USER_ID int
PERSON_ID int
USER_TYPE bit
USER_NAME varchar(50)
USER_PASSWORD varchar(50)
USER_LOCK bit
CREATE_DATE varchar(8)




ولی در جدول خود Membership اطلاعات زیر دخیره میشه




ApplicationId uniqueidentifier,
UserId uniqueidentifier ,
Password nvarchar(128) ,
PasswordFormat int,
PasswordSalt nvarchar(128),
MobilePIN nvarchar(16) ,
Email nvarchar(256) ,
LoweredEmail nvarchar(256) ,
PasswordQuestion nvarchar(256) ,
PasswordAnswer nvarchar(128) ,
IsApproved bit,
IsLockedOut bit,
CreateDate datetime,
LastLoginDate datetime,
LastPasswordChangedDate datetime ,
LastLockoutDate datetime,
FailedPasswordAttemptCount int,
FailedPasswordAttemptWindowStart datetime,
FailedPasswordAnswerAttemptCount int,
FailedPasswordAnswerAttemptWindowStart datetime,
Comment ntext,



حالا با توجه به این موضوع که شاید 95% درصد اطلاعاتی که من نیاز دارم با چیزی که خود Membership داره فرق می کنه آیا باز بهتر است از جدول خود Membership استفاده کنم؟؟؟؟

من یه مطلب خیلی جالبی که چند روز پیش داشتم در یک مقاله می خوندم CustomMenbership بود که خودمان یک جدول درست می کردیم و در یک پروژه ClassLibrary ، Membershipرو به ارث می بردم به صورت زیر



public sealed class MembershipProvider : MembershipProvider


آیا برای کار خودم باید از این کار استفاده کنم؟؟؟؟؟

mohsen_zelzela00
جمعه 25 دی 1388, 12:29 عصر
من هم دقیقاً این سوال رو دارم اگه دوستان بتونن کمک کنند ممنون میشم خیلی مهم است

دانش آموز
شنبه 26 دی 1388, 00:30 صبح
شما اگه نمیخوای از امکانات ممبر شیپ استفاده کنی می تونی خودت جداول مورد نیازت را بسازی
یه بدی دیگه ای که ممبر شیپ داره دسترسی به فولدرها را فقط محدود میکنه نه صفحات
تو میتونی یک جدول واسه کاربرت انتخاب کنی با فیلدهای role,id,........

mohsen_zelzela00
شنبه 26 دی 1388, 02:55 صبح
شما اگه نمیخوای از امکانات ممبر شیپ استفاده کنی می تونی خودت جداول مورد نیازت را بسازی


نه دوست عزیز من می خوام از خود Membership استفاده کنم ولی خب فیلدهای مورد نیاز من با فیلدهای جدولMembership فرق می کنند فکر کنم ما بتونیم یک جدول درست کنیم و MemberShip رو به آن وصل کنیم من همچین چیزی رو در سایت asp دیدم به نام MembershipProvider
(البته به این سادگی که گفتم نیست)

حالا اگه اساتید ایده خود رو مطرح کنند ممنون میشم

raziee
دوشنبه 28 دی 1388, 19:09 عصر
نه دوست عزیز من می خوام از خود Membership استفاده کنم ولی خب فیلدهای مورد نیاز من با فیلدهای جدولMembership فرق می کنند فکر کنم ما بتونیم یک جدول درست کنیم و MemberShip رو به آن وصل کنیم من همچین چیزی رو در سایت asp دیدم به نام MembershipProvider
(البته به این سادگی که گفتم نیست)

MembershipProvider رو باید در webconfig معرفی کنید.

بعد از تنظیم کردن وب کانفیگ شما میتونید به ممبر شیپ دسترسی داشته باشید.
حالا جداولتون رو که دارید.(با استفاده از aspnet_regsql.exe جداول رو در بان خودتون بسازید)
حالا جداولی که نیاز دارین رو بسازین و ارتباط بدید.
یه فیلد به نام UserIDدرست کنید و ربطش بدید.
حالا مشکل کجاست؟