PDA

View Full Version : سوال: فروش سورس بخش مجوز کاربری



zman123456
یک شنبه 21 مهر 1387, 11:40 صبح
با سلام
من یه سورس بخش مجوزدهی به کاربران دارم و می خوام به صورت یه Package بفروشمش
امکانات:
1- تعریف کاربران.
2- تعریف گروه های کاربری.
3- تعریف فرم های نرم افزار.
4- تعریف بخش هایی از فرم که نیاز دارید روی آن مجوز لحاظ گردد.
5- تعریف مجوز برای هر گروه روی تمام بخشهای تعریف شده.
**این مجوز بر روی منوهای فرم اصلی نیز قابل تعریف می باشد و روی آنها نیز مجوز را برقرار کرده و دسترسی را محدود می نماید.
روی چند نرم افزار که خودم نوشتم تست شده.
با این قابلیتها چند بفروشم خوبه؟

Elham_gh
یک شنبه 21 مهر 1387, 11:50 صبح
اینها قابلیتهای زیادی نیستند.
نظر من اینه که موارد زیر را هم در نظر بگیرید:
-سطح دسترسی در حد فیلد و آیتمهای اطلاعاتی
-سطح دسترسی در حد رکورد
-امکان تعریف دسترسی برای گروههای دسترسی , کاربر , واحد سازمانی و سمت
- امکان کنترل برآیند سطوح دسترسی برای یک کاربر

zman123456
یک شنبه 21 مهر 1387, 12:11 عصر
اینها قابلیتهای زیادی نیستند.
نظر من اینه که موارد زیر را هم در نظر بگیرید:
-سطح دسترسی در حد فیلد و آیتمهای اطلاعاتی
-سطح دسترسی در حد رکورد
-امکان تعریف دسترسی برای گروههای دسترسی , کاربر , واحد سازمانی و سمت
- امکان کنترل برآیند سطوح دسترسی برای یک کاربر
میشه در مورد در حد رکورد رو توضیح دهید؟
امکان کنترل برایند که راحته.اضافه میکنم.

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

Microsoft.net
پنج شنبه 25 مهر 1387, 20:53 عصر
برنامت باید این امکانو داشته باشه که یک فایل DLL یا EXE حاوی فرمهای برنامه رو بهش بدی و اون تمام فرمهای اونو استخراج کنه و بتونه یک پیش نمایش از اون فرم به کاربر نشون بده و بتونه روی تک تک Object های اون فرم دسترسی بده ، برای این کار باید یک فرم پدر(Secure Form) داشته باشی که بشه ازش Inherit کرد و ... این کار رو کردی بعد بیا تا بگم دیگه چی کم داره برنامت (;
این کارایی که کردی خوبه ولی چیز جدیدی نیست الان هر پدر صلواتی که یک Visual Studio رو سیستمش نصب کرده این چیزایی که به عنوان ویژگی گفتی رو تو برنامش نوشته و بعیده بتونی اونو راضی کنی پول خوبی واسه برنامت بده ، باید برنامت یک چیز جدید داشته باشه یک ایده جدید و خوب و راحت ، اگه این چیزا رو تونستی پیاده کنی بعد بیا در مورد بقیش صحبت میکنیم !

Elham_gh
سه شنبه 30 مهر 1387, 10:31 صبح
دسترسی در حد رکورد یعنی اینکه مثلا فلان کاربر یا گروه دسترسی به رکورد هایی که مشخصه خاص رو دارند دسترسی نداشته باشند. مثال می زنم.

شما اطلاعات کلیه پرسنل شهرداری تهران دارید. و روی آن یکسری سرویس میدید. حالا شرایط زیر را در نظر گیرید

1- اداره کل امور اداری شهرداری دارای بخش ایثار گران است که مسئول آن فقط به اطلاعات کارمندان ایثارگر دسترسی دارد.

2- مسئول امور اداری به اطلاعات کل دسترسی دارد

3-مسئول امور اداری هر منطقه به اطلاعات کارمندان همان منطقه دسترسی دارد در حد مشاهده

4- مسئول امور اداری هر منطقه فقط می تواند برای کارمندانی حکم صادر کند که کارمند همان منطقه باشند و رتبه شان پایین 12 باشد

.....

اینها با دسترسی در حد رکورد امکان پذیر است

که البته بگم پیاده سازی آن مشکل است.

zman123456
چهارشنبه 01 آبان 1387, 09:26 صبح
دسترسی در حد رکورد یعنی اینکه مثلا فلان کاربر یا گروه دسترسی به رکورد هایی که مشخصه خاص رو دارند دسترسی نداشته باشند. مثال می زنم.

شما اطلاعات کلیه پرسنل شهرداری تهران دارید. و روی آن یکسری سرویس میدید. حالا شرایط زیر را در نظر گیرید

1- اداره کل امور اداری شهرداری دارای بخش ایثار گران است که مسئول آن فقط به اطلاعات کارمندان ایثارگر دسترسی دارد.

2- مسئول امور اداری به اطلاعات کل دسترسی دارد

3-مسئول امور اداری هر منطقه به اطلاعات کارمندان همان منطقه دسترسی دارد در حد مشاهده

4- مسئول امور اداری هر منطقه فقط می تواند برای کارمندانی حکم صادر کند که کارمند همان منطقه باشند و رتبه شان پایین 12 باشد

.....

اینها با دسترسی در حد رکورد امکان پذیر است

که البته بگم پیاده سازی آن مشکل است.
واقعا کار سختیه.من همیشه این کارها رو جزء امکانات کنترلی سیستم نرم افزاری و درهنگام آنالیز سیستم میدونستم.
باید راهی پیدا کرد که سیستم خودش بتونه هوشمند اینگونه تنظیمات رو بخونه یا قابل تعریف باشه.هوشمند بودنش که فکر نکنم شدنی باشه.

Elham_gh
چهارشنبه 01 آبان 1387, 09:49 صبح
واقعا کار سختیه.من همیشه این کارها رو جزء امکانات کنترلی سیستم نرم افزاری و درهنگام آنالیز سیستم میدونستم.
باید راهی پیدا کرد که سیستم خودش بتونه هوشمند اینگونه تنظیمات رو بخونه یا قابل تعریف باشه.هوشمند بودنش که فکر نکنم شدنی باشه.

چرا دوست عزیز شدنیه. من خودم پیادش کردم.
اما اصلا راحت نیست.
تازه برخی از Database ها تحت عنوان Row Level Security این مقوله رو دارند. که البته من فقط Oracle رو می شناسم که اونم در این مورد بسیار ضعیف عمل می کنه.می دونین چرا؟ مثال می زنم.
فرض کنید جدولی دارید به نام پرسنل و یک جدول دارید به اسم احکام پرسنلی که وصل به جدول پرسنلی.یعنی Foreign key داره به پرسنلی. حالا تو Oracle میاین می گین کسانی که عضو گروه A هستند به رکوردهایی از جدول پرسنلی دسترسی دارد که فیلد ایثارگریشون پر نباشه.
خوب هر زمان شما بخواین به جدول پرسنلی دسترسی داشته باشین و عضو گروه A باشین اطلاعات پرسنل ایثار گر رو نمی بینید و تا اینجا مشکلی نیست.
اما خوب اگر شما به جدول احکام هم برید باید فقط احکام پرسنلی رو ببنید که ایثار گر نیستند , اما اوراکل نمی تونه Row level security را به جدولهای مرتبط تعمیم بده.
گاهی Row level security روی یک جدول از 5 تا ارتباط بالاترش نشآت می گیره!

davoodrm666_666
چهارشنبه 01 آبان 1387, 14:44 عصر
سیستم دسترسی برنامه های ما به این صورته که
اولا روی menustrip - toolstrip و کلیه کنترل می تونه دسترسی بزاره حتی بر روی column های یک دیتا گرید.
خصوصیت مهم این سیستم اینه که توی هر برنامه ای اگر اضافش کنین تنها کافیه کنترل ها رو با قوائد گفته شده تعریف کنید. به راحتی کنترل به لیست دسترسی ها اضافه میشه و نیازی به نوشتن کد نیست
خصوصیت مهم دیگه این سیستم اینه که فرض کنید شما یه برنامه جامع که شامل حسابداری و خزانه داری نوشتید و حالا می خواین فقط حسابداری برنامه رو بفروشید با استفاده از این سیستم با چند تا کلیک و بدون کد نویسی میتونید این کار رو انجام بدید
این سیستم یک ماژول و یک فرم و یک COMBObOX (که فقط برنامه نویس در زمان اجرا با یک USER خاص این رو میبینه)به هر سیستم که بخواد دسترسی ها رو داشته باشه اضافه می کنه و هیچ کد و تنظیمی نمی خواد

Microsoft.net
چهارشنبه 01 آبان 1387, 16:51 عصر
سیستم دسترسی برنامه های ما به این صورته که
اولا روی menustrip - toolstrip و کلیه کنترل می تونه دسترسی بزاره حتی بر روی column های یک دیتا گرید.
خصوصیت مهم این سیستم اینه که توی هر برنامه ای اگر اضافش کنین تنها کافیه کنترل ها رو با قوائد گفته شده تعریف کنید. به راحتی کنترل به لیست دسترسی ها اضافه میشه و نیازی به نوشتن کد نیست
خصوصیت مهم دیگه این سیستم اینه که فرض کنید شما یه برنامه جامع که شامل حسابداری و خزانه داری نوشتید و حالا می خواین فقط حسابداری برنامه رو بفروشید با استفاده از این سیستم با چند تا کلیک و بدون کد نویسی میتونید این کار رو انجام بدید
این سیستم یک ماژول و یک فرم و یک COMBObOX (که فقط برنامه نویس در زمان اجرا با یک USER خاص این رو میبینه)به هر سیستم که بخواد دسترسی ها رو داشته باشه اضافه می کنه و هیچ کد و تنظیمی نمی خواد

بازم ميگم تا زماني كه برنامت نتونه فرمهاي طراحي شده توسط برنامه نويس رو به صورت Dynamic نشون بده و كاربر بتونه مثلا يه TextBox يا يه Grid رو انتخاب كنه و Visible يا Readonly يا ... اونو براي كاربر خاصي True يا False كنه و ذخيره كنه و از اين به بعد هر وقت اون كاربر وارد اون فرم شد تغييرات رو ببينه برنامت حرفي واسه گفتن نداره
اين چيزهايي هم كه خانم Elham فرمودند خوبه ولي راه حل داره و در مرحله بعدي مطرح ميشه يعني اينكه سيستم شما كامل باشه و بخواهيد يك سطح جديدي از Security به سيستمت اضافه كني
يكي از راه حل هاي Record Level Security اينه كه شما به همراه برنامت يك لايه DataAccess هم ارايه بدي . يا اينكه لايه Security كه داري به راحتي توسط يك لايه DataAccess قابل دسترسي باشه .اعمال اين گونه كارها از طريق اين لايه بسيار راحت و انعطاف پذيره

davoodrm666_666
چهارشنبه 01 آبان 1387, 20:16 عصر
بازم ميگم تا زماني كه برنامت نتونه فرمهاي طراحي شده توسط برنامه نويس رو به صورت Dynamic نشون بده و كاربر بتونه مثلا يه TextBox يا يه Grid رو انتخاب كنه و Visible يا Readonly يا ... اونو براي كاربر خاصي True يا False كنه و ذخيره كنه و از اين به بعد هر وقت اون كاربر وارد اون فرم شد تغييرات رو ببينه برنامت حرفي واسه گفتن نداره
اين چيزهايي هم كه خانم Elham فرمودند خوبه ولي راه حل داره و در مرحله بعدي مطرح ميشه يعني اينكه سيستم شما كامل باشه و بخواهيد يك سطح جديدي از Security به سيستمت اضافه كني
يكي از راه حل هاي Record Level Security اينه كه شما به همراه برنامت يك لايه DataAccess هم ارايه بدي . يا اينكه لايه Security كه داري به راحتي توسط يك لايه DataAccess قابل دسترسي باشه .اعمال اين گونه كارها از طريق اين لايه بسيار راحت و انعطاف پذيره


اگر منظور شما فایل Exe هست که برنامه فایل Exe بگیره و اون کاری که شما گفتی رو انجام بده که بعیده

اما برنامه ما دقیقا کاری که شما می گید می کنه یعنی توی همون ComboBox که گفتم اسم تمام فرم ها قرار داره و شما با انتخاب نام هر فرم می تونید دسترسی های مورد نظر رو برای اون فرم ابتدا تعریف کنید ( تعیین کنید که چه چیز های به دسترسی سیستم اضافه بشه و چه چیزهایی اضافه نشود)
مثلا شما توی یه فرم تون امکان استفاده از بارکد رو با کلیک بر روی یک چک باکس گذاشتید و حالا نمی خواید برای همه مشتری هاتون این امکان رو بدید( بدون کم و زیاد کردن کد) به راحتی می تونید با سیستم ما این کار رو بکنید و می تونید فقط به یک مشتری تون این امکان رو بدید ( در زمان اجرا با کد کاربری مخصوص) بعد اون مشتری می تونه امکان بارکد رو برای کاربراش تعریف کنه

vcldeveloper
پنج شنبه 02 آبان 1387, 01:19 صبح
به نظر من، خیلی از امکاناتی که دوستان اشاره کردند، چندان لازم نیستند. اینکه ماجول شما به کاربر امکان بده که هر جزئی از فرم را بصورت ویژوال کنترل کنه، خوب هست، ولی یک مزیت عمده برای همچین ماجولی محسوب نمیشه. در هر حال این ماجول برای استفاده یک برنامه نویس طراحی شده، نه برای استفاده کاربر نهایی، حداقل همه بخش های آن قابل استفاده توسط کاربر نهایی نخواهند بود.

شاید بهتر باشه که بجای اینکه به جزئیات مثل پشتیبانی از Record Lock یا امکان Inherit کردن فرم جدید پرداخته بشه، هر کس مواردی که از نظرش بطور کلی در همچین سیستمی مهم هست را بیان کنه، و اگر تجربه ایی هم داره، خلاصه ایی از اون رو اینجا بزاره. اینطوری بجای اشاره کردن به یکسری مطالب جسته و گریخته، تصویر روشن تری از طرز تفکر فرد مربوطه نسبت به همچین سیستمی، و علت تاکیدش روی برخی قابلیت های خاص بدست میاد.

--------------------------------

نکاتی که از نظر من در همچین ماجولی مهم هستند عبارتند از:
1- ساختار انعطاف پذیر برای ایجاد انواع Roleها، مجوزها، و کاربران.
2- ارائه راهکار امنیتی مناسب در مراحل مختلف کار مثل امنیت داده های مربوط به مجوز کاربران در بانک، یا امنیت رابط کاربری که برخی از اطلاعات حساس کاربر مثل کلمه رمز را دریافت میکنه.
3- Generic بودن محصول ارائه شده تا بتوان از آن در نرم افزارهای مختلف با بانک های اطلاعاتی مختلف استفاده کرد.
4- ارائه رابط برنامه نویسی یکدست و مناسب برای استفاده از انواع قابلیت های پیش بینی شده در سیستم.

به نظر من اکثر برنامه نویسانی که ممکن هست برای همچین قابلیتی (کنترل مجوز دسترسی کاربران) به یک سیستم 3rd-party رو بیارند، بخاطر یکی یا بعضی از ویژگی های بالاست. اکثر برنامه نویسانی که برنامه ایی می نویسند که نیاز به کنترل سطح دسترسی کاربران دارند، می دانند که چطور دسترسی به برخی اجزای یک فرم را فعال یا غیرفعال کنند. به عنوان مثال عملی، در دلفی برنامه نویس فقط نیاز دارد برای هر قابلیت یک Action تعریف کند و تمام کنترل های مورد نیاز خود در فرم را به آن Bind کند، تا با هر با تغییر خصوصیات Enabled یا Visible آن Action کلیه کنترل های متصل به آن هم تغییر حالت بدهند. پس تغییر گروهی عناصر رابط کاربر کار پیچیده ایی نیست که برنامه نویس برای آن هزینه ایی بپردازد. ولی ارائه یک رابط برنامه نویسی واحد که بشه از آن در پروژه های مختلف برای مدیریت کاربران استفاده کرد، یا سیستمی که خودش بدون نیاز به درگیر شدن برنامه نویس معیارهای امنیتی مورد نیاز برای کنترل دسترسی کاربران را لحاظ کند، یا سیستمی که بتواند بدون نیاز در کدنویسی با انواع بانک های اطلاعاتی برای کنترل دسترسی کاربران کار کند، می تواند ارزش پرداخت هزینه را داشته باشد.


مواردی که در همچین سیستمی به آنها پرداخته میشه:

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

مورد بعدی ساختار بانک اطلاعاتی هست؛ یعنی این سیستم باید به چه شکلی از بانک اطلاعاتی برای ذخیره اطلاعات مربوط به مجوز کاربران استفاده کند؟ مثلا آیا باید مجوزها در جدول جداگانه ایی نگهداری شوند، یا برای هر رکورد در جدول Roles یا Users فیلدی برای مجوزها وجود داشته باشد، و مجوزهای مختلف در آن بصورت مقادیر باینری نگهداری شوند؟

مورد بعدی امنیت داده های ذخیره شده در بانک است. مثلا در صورتی که فردی (فرضا یک هکر) به بانک دسترسی پیدا کرد، چه راهکاری برای افشا نشدن کلمه عبور کاربر پیش بینی شده؟ اگر کلمات عبور Hash شده هستند، چه راهکاری پیش بینی شده تا فردی نتواند با جایگزینی Hash مربوط به کلمه رمز خودش با کلمه رمز یک مدیر سطح دسترسی خود را افزایش ندهد؟ چه راهکاری پیش بینی شده که کاربر نتواند مجوزهای خود یا دیگران را تغییر دهد؟

مورد بعدی رابط برنامه نویسی ارائه شده است. مثلا به عنوان نمونه؛ برنامه نویس چطور می تواند یک کاربر را در سیستم لاگین کند؟ چطور اعتبار کاربری که قصد انجام یک عمل مدیریتی را دارد سنجیده می شود؟ چطور می توان به لیست مجوزهای کاربر لاگین شده دسترسی داشت؟

مورد بعدی چگونگی ارتباط با بانک اطلاعاتی است. ارتباط با بانک اطلاعاتی در لایه های زیرین سیستم اتفاق میافته. چطور میشه نوع ارتباط را مستقل از بانک اطلاعاتی، که برای ذخیره اطلاعات استفاده میشه، کرد؟ مثلا بشه از Oracle, MS SQL, MySQL, FireBird, MS Access و... به عنوان بانک اطلاعاتی استفاده کرد، بدون آنکه نیاز به تغییر در سیستم باشد.

مورد بعدی چگونگی اعمال مجوزهای کاربر بر روی کنترل ها و فرم های برنامه هست. مجوزها باید روی چه چیزهایی اعمال شوند؟ چطور باید اعمال شوند؟ آیا برنامه نویس باید برای آنها کد نویسی کند، یا اینکه تمام کار باید بصورت Visual و توسط سیستم انجام شود؟

مورد بعدی این هست که سیستم چه راهکارهایی برای ارائه به کاربر نهایی ارائه می کند تا برخی از امور متداول و تکراری مربوط به تعامل با کاربر نهایی را برعهده بگیرد و کار برنامه نویس را راحت تر کند؟ مثلا آیا سیستم پنجره Loginایی برای کاربر نهایی فراهم می کند تا برنامه نویس مجبور نباشد هر بار خودش با استفاده از رابط برنامه نویسی ارائه شده این کار را بکند؟ آیا سیستم پنجره ایی برای مدیریت دسترسی کاربران توسط کاربر نهایی ارائه می کند تا برنامه نویس مجبور نباشد هر بار یک کنسول مدیریتی برای کاربر نهایی طراحی کند؟


هر فردی باید متناسب با ایده هایی که داره، و نیازهایی که احساس میکنه، هر یک از این موارد را به شکل مورد نظر خودش پیاده سازی کنه.

من زمانی سفارشی داشتم که باید همچین سیستمی را برای مجموعه ایی از نرم افزارها طراحی و پیاده سازی کنم.
در طرح من هر کاربر فقط می توانست به یک Role متصل شود، و مجوزها به Roleها اختصاص پیدا می کرد. این طرح خیلی انعطاف پذیر نبود، ولی برای کار مربوطه کفایت می کرد. مجوزها، اطلاعات کاربران، و Roleها در جداول مستقلی نگهداری میشند. جدولی هم برای ارتباط Roleها و مجوزها در نظر گرفته شد.
برای نگهداری کلمه های رمز از Hash Code استفاده شد، ولی این کد به شناسه کاربر و Role کاربر هم Bind شد تا در صورت دسترسی به بانک، تغییر کلمه عبور، یا Role کاربر امکان پذیر نباشد. در جدول اتصال Roleها به مجوزها هم همین کار انجام شد تا امکان تغییر یا کپی یک مجوز برای Role دیگر امکان پذیر نباشه. داده های عادی مثل توضیحات مربوط به مجوزها و Roleها، یا مشخصات کاربر بدون رمزنگاری روی بانک نوشته میشدند. علتش هم این بود که برای ارتباط با بانک از یک لایه Data Access استفاده میشد، پس اگر نیاز به رمزنگاری برخی از فیلدها بود، کافی بود که برنامه نویس استفاده کننده از سیستم کدهای مربوط به Encode\Decode کردن مقادیر اون فیلدها را در این لایه Data Access بنویسه، بدون اینکه تاثیری روی عملکرد سیستم بزاره. برای راحتی کار برنامه نویس هم یک کلاس برای تولید کدهای Hash و رمزنگاری symmetric با استفاده از الگوریتم های مختلف ایجاد شد.
من روی استقلال از نوع بانک اطلاعاتی مورد استفاده تاکید داشتم، پس بجای دسترسی مستقیم به بانک، از کلاس TDataSet در دلفی استفاده کردم. این کلاس کلاس پایه تمامی Recordset هایی هست که از بانک های اطلاعاتی مختلف دریافت میشند و در اختیار برنامه نویس قرار می گیرند. پس اگر کدی برای تمام تعاملات خودش با بانک اطلاعاتی از این کلاس استفاده کند، مستقل از نوع ارتباط با بانک اطلاعاتی، و نوع بانک اطلاعاتی خواهد بود. البته به دلیل ابتدایی بودن کلاس TDataSet و توسعه گسترده آن توسط کلاس های فرزند، استفاده از TDataSet باعث محدودیت هایی هم میشد، و برخی از امور بانک اطلاعاتی که با یک کوئری ساده قابل اجرا بودند، باید بوسیله TDataset از طریق نوشتن چندین خط کد و حتی گاهی کاهش محدود کارایی انجام میشدند.

مورد بعدی رابط برنامه نویسی بود که باید به برنامه نویس ارائه میشد. برای این کار من تصمیم گرفتم کل سیستم در قالب چند کامپوننت ارائه بشند:
1- یک کامپوننت برای کنترل کاربر جاری که به سیستم لاگین کرده. این کامپوننت باید می تونست کاربر را در سیستم لاگین کند، لیست مجوزهای کاربر را نگهداری کنه، مشخصات کاربر را نگهداری کنه؛ و به کاربر امکان تغییر برخی از مشخصات خودش، و تغییر کلمه عبور را بدهد.

2- یک کامپوننت برای مدیریت کاربران. این کامپوننت باید می تونست تمامی اعمال مدیریتی تعریف شده برای سیستم را انجام بده (مثل ایجاد کاربر جدید، Role جدید، Reset کردن کلمه عبور یک کاربر، و...). این کامپوننت برای انجام اعمال مدیریتی خودش نیاز به کامپوننت شماره 1 داشت. هر زمان که نیاز به انجام یک عمل مدیریتی بود، این کامپوننت بررسی می کرد که کامپوننت شماره 1 لاگین کرده باشد، سپس مشخصات این کامپوننت را که همان مشخصات کاربر لاگین شده بود، از طریق یک رویداد در اختیار برنامه نویس قرار می داد. به این ترتیب برنامه نویس می توانست بررسی کند که چه کسی قصد انجام عمل مدیریتی را دارد، و آیا این فرد مجوز لازم برای انجام این عمل را دارد یا خیر. مقداری که برنامه نویس برگشت می داد، مشخص می کرد که آیا کاربر مربوطه امکان انجام عمل مورد نظر را دارد یا نه.

3- یک کامپوننت برای دریافت اطلاعات لاگین کاربر بصورت Visual. استفاده از این کامپوننت اختیاری بود. برنامه نویس می توانست با اضافه کردن آن به پروژه و اتصال آن به کامپوننت شماره 1 موجب شود که هر بار کاربر باید لاگین کند، این فرم برای دریافت مقادیر ورودی ظاهر شود. در این فرم باید هم امکان تغییر زبان وجود می داشت، هم یکسری تسهیلات امنیتی برای افزایش امنیت کلمه عبور ورودی در نظر گرفته میشد، مثل Text Box خاصی برای دریافت کلمه عبور که وابسته به امکانات فراهم شده توسط سیستم عامل برای مخفی کردن کلمه عبور نباشد، و روتین های ساده ایی برای مقابله با Key Logger های ساده.

4- کامپوننتی برای نمایش یک Dialogbox به کاربر که با اتصال به کامپوننت شماره 2 تمامی قابلیت های مدیریتی آن کامپوننت را بصورت Visual در اختیار برنامه نویس یا کاربر نهایی قرار می داد، و زبان آن هم قابل تغییر بود.

5- ارائه یک کلاس پایه جدید برای فرم ها. این کلاس یک فرم معمولی بود که برخی خصوصیات به آن اضافه شده. اولین خصوصیت مربوط به کامپوننت شماره 1 بود؛ به این صورت که باید از طریق تنظیم این خصوصیت مشخص میشد که چه شی ایی وظیفه نگهداری اطلاعات کاربر فراخوان فرم را در خود دارد. این فرم قبل از هر بار نمایش خود بررسی می کرد که کاربر مربوطه لاگین باشد، اگر لاگین نبود، در صورت اتصال کامپوننت 3 به آن، پنجره لاگین ارائه شده توسط کامپوننت شماره 3 به کاربر نمایش داده میشد تا اطلاعات لاگین را وارد کند. سپس رویداد OnAuthentication فرم فراخوانی میشد که اطلاعات مربوط به مجوزهای کاربر فراخوان فرم در اختیار برنامه نویس قرار می گرفت. این فرم خصوصیت دیگری هم برای نگهداری مجوزهای مورد نیاز فرم داشت که مشخص می کرد چه مجوزهایی باید در هنگام فراخوانی فرم بررسی شوند. در رویداد OnAuthentication برنامه نویس می توانست این مجوزها را با مجوزهای ارائه شده توسط کاربر مقایسه کند و در صورت لزوم، برخی از اجزاء فرم را غیرفعال کرده، یا کلا از نمایش فرم جلوگیری کند.

علاوه بر این موارد، Plug-inایی برای IDE نوشته شد تا کاربر بتواند با انتخاب یک گزینه از Repository، یک ماجول شامل تمامی کامپوننت و Datasetهای مورد نیاز، که به هم متصل شده بودند، را به پروژه اضافه کند، تا برای هر پروژه مجبور به اضافه کردن تک تک آنها و تنظیم خصوصیات شان نباشد.
یک برنامه هم ایجاد شده بود که مشخصات بانک اطلاعاتی و نام جداول را از کاربر دریافت می کرد، و جداول مورد نیاز را در بانک اطلاعاتی مربوطه ایجاد می کرد تا برنامه نویس مجبور نباشد برای هر پروژه شخصا جداول و ارتباطاتشان را ایجاد کند.

کل مجموعه شامل 10 کلاس مختلف شد. همونطوری هم که قبلا اشاره کردم، ضرورتی در این ندیدم که خودم برای برنامه نویس رابطی ارائه کنم که حتی روی ستون های گرید هم مستقیما از طریق سیستم اعمال مدیریت کنه، بلکه وظیفه سیستم را تا آن حد دونستم که به برنامه نویس اطمینان بده کاربر لاگین شده، و لیست مجوزهاش معتبر هستند. مابقی امور توسط برنامه نویس و با کمک سیستم از طریق لیست مجوزهای ارائه شده، و رویدادهای در نظر گرفته شده، انجام می شدند.

Microsoft.net
پنج شنبه 02 آبان 1387, 09:32 صبح
اگر منظور شما فایل Exe هست که برنامه فایل Exe بگیره و اون کاری که شما گفتی رو انجام بده که بعیده

اما برنامه ما دقیقا کاری که شما می گید می کنه یعنی توی همون ComboBox که گفتم اسم تمام فرم ها قرار داره و شما با انتخاب نام هر فرم می تونید دسترسی های مورد نظر رو برای اون فرم ابتدا تعریف کنید ( تعیین کنید که چه چیز های به دسترسی سیستم اضافه بشه و چه چیزهایی اضافه نشود)
مثلا شما توی یه فرم تون امکان استفاده از بارکد رو با کلیک بر روی یک چک باکس گذاشتید و حالا نمی خواید برای همه مشتری هاتون این امکان رو بدید( بدون کم و زیاد کردن کد) به راحتی می تونید با سیستم ما این کار رو بکنید و می تونید فقط به یک مشتری تون این امکان رو بدید ( در زمان اجرا با کد کاربری مخصوص) بعد اون مشتری می تونه امکان بارکد رو برای کاربراش تعریف کنه

چرا بعيده ؟ Reflection در دات نت به راحتي به شما امكان استخراج منابع يك Exe يا DLL رو ميده

davoodrm666_666
شنبه 04 آبان 1387, 20:31 عصر
امکان استخراج منابع رو میده درسته؟ نه امکان استخراج اشیا

Microsoft.net
یک شنبه 05 آبان 1387, 10:57 صبح
امکان استخراج منابع رو میده درسته؟ نه امکان استخراج اشیا

هم منابع هم اشيا هم متود ها هم property ها هم فانكشن ها هم روالها هم رويداد ها هم ...

davoodrm666_666
یک شنبه 05 آبان 1387, 11:11 صبح
هم منابع هم اشيا هم متود ها هم property ها هم فانكشن ها هم روالها هم رويداد ها هم ...
دوست عزیز اگر این کار رو بتونید انجام بدید من رو هم راهنمایی کنید!
من یه برنامه تحت net2005. می دم شما یه زحمت بکش و نام فرم ها و button های روی فرم رو به من بده می تونید؟

vcldeveloper
یک شنبه 05 آبان 1387, 11:54 صبح
من یه برنامه تحت net2005. می دم شما یه زحمت بکش و نام فرم ها و button های روی فرم رو به من بده می تونید؟
برید در تالار دات نت، و Refelection را جستجو کنید. این تاپیک جای این بحث نیست!

zman123456
یک شنبه 05 آبان 1387, 13:34 عصر
ای آقا ما یه سوال کردیم.شد کلکل.
ولی نظر من با این دوستمون بیشتر یکسان هست.که یکسری کارها مربوط به سیستم میشه و هر کاری رو نمی شه از سیستم مجوز دهی خواست.
بله این درسته.وقتی میگن آقای x نباید به y دسترسی داشته باشه میشه مجوز دهی.ولی بعضی چیزها میشه روند کاری یک سیستم کاغذی که به کامپیوتری تبدیل شده.
اگر کسی مخالفه بفرمایند تا استفاده کنیم.

MOJTABAATEFEH
سه شنبه 11 آبان 1389, 19:29 عصر
آقای کشاورز این کامپوننت ها که نوشتین رو میشه تهیه کرد؟

با تشکر

vcldeveloper
چهارشنبه 12 آبان 1389, 12:03 عصر
آقای کشاورز این کامپوننت ها که نوشتین رو میشه تهیه کرد؟
سلام،

خیر، چون برای یک پروژه ایی اینها رو نوشته بودم، و بعدا درگیر امور دیگه شدم، فرصت نکردم که اینها را به اندازه کافی توسعه بدم و به عنوان کامپوننت های کاملا مستقل ارائه کنم.

موفق باشید

MOJTABAATEFEH
پنج شنبه 13 آبان 1389, 19:40 عصر
سلام،

خیر، چون برای یک پروژه ایی اینها رو نوشته بودم، و بعدا درگیر امور دیگه شدم، فرصت نکردم که اینها را به اندازه کافی توسعه بدم و به عنوان کامپوننت های کاملا مستقل ارائه کنم.

موفق باشید

منبع کاملی سراغ دارید که در این مورد باشه؟

با تشکر