PDA

View Full Version : سوال: کنترل کاربران در هنگام ورود به برنامه



delphiprog3000
دوشنبه 01 مهر 1387, 21:03 عصر
با سلام به دوستان واساتید محترم.

برای کنترل کاربران و وارد نشدن کاربری با همان نام کاربری وارد شده. دسوتان چه راهی رو پیشنهاد میکنند.

2 راه رو در موردش اطلاعاتی دارم.

1- میتوان نام کاربر را هنگام ورود گرفته و در تیبلی دیگر ذخیره نمود .
در صورت ورود دوباره چک کنه که همچین نامی در آن جدول وارد شده اگه نشده به سیستم وارد شه.
ولی عیب آن اینه که در صورت خاموش شدن یسیتم یا رفتن برق از سیستم اسم کاربر وارد شده در تیبل باقی میماند.

2- استفاده از sp_who هست که میتوان با sp_id کاربران را کنترل نمود و در صورت دوبار بودن id آن را kill کرد.

بازم منتظر نظر اساتید هستم.......

با تشکر.........

SYNDROME
سه شنبه 02 مهر 1387, 06:32 صبح
روش دوم به نظر من بهتر است.
برای هر کاربر یک User در SQL بسازید و در صورت Connect بودن User دیگر اجازه ورود به کاربر دیگر با همان نام را ندهید.
موفق باشید

ghabil
سه شنبه 02 مهر 1387, 13:50 عصر
در روش دوم هم مشکل روش اول هست ، راه حل روش اول اینه که همیشه آخرین زمان فعالیت کاربر رو در همون جدولی که برای کاربرات میگیری ذخیره کنی و زمانی که میخوای کاربر جدید رو چک کنی تست کنی و ببینی مثلا اگر 10 دقیق بیشتر بود که فعالیت نکرده سشنش رو ببندی و نتیجه بگیری که فعال نیست.

SYNDROME
سه شنبه 02 مهر 1387, 16:06 عصر
در روش دوم هم مشکل روش اول هست
ولی دوست عزیز فکر نکنم چنین مشکلی داشته باشد.
زمانی که برای هر کاربر در برنامه یک یکUser در SQL Server بسازید و هر کاربر User خاص خود به SQL متصل شود هر زمان و به هر دلیلی ارتباط قطع شود نام User از لیست User های SQL خارج می شود.
موفق باشید

mandana2010
چهارشنبه 03 مهر 1387, 10:37 صبح
حالا چطور مي تونيم از داخل دلفي كاربري توي LOGIN هاي SQL بسازيم

vcldeveloper
چهارشنبه 03 مهر 1387, 17:48 عصر
حالا چطور مي تونيم از داخل دلفي كاربري توي LOGIN هاي SQL بسازيم
ُُSQL Server برای این کار SPهای سیستمی داره که می تونید از اونها استفاده کنید. می تونید در بخش SQL Server اسم SPایی که میشه باهاش لاگین و یوزر ساخت را بپرسید.

delphiprog3000
چهارشنبه 03 مهر 1387, 19:14 عصر
حالا چطور مي تونيم از داخل دلفي كاربري توي LOGIN هاي SQL بسازيم

این لینک میتونه به شما دوست گرامی کمک کنه:


http://barnamenevis.org/forum/showthread.php?t=118208

delphiprog3000
چهارشنبه 03 مهر 1387, 19:21 عصر
در روش دوم هم مشکل روش اول هست ، راه حل روش اول اینه که همیشه آخرین زمان فعالیت کاربر رو در همون جدولی که برای کاربرات میگیری ذخیره کنی و زمانی که میخوای کاربر جدید رو چک کنی تست کنی و ببینی مثلا اگر 10 دقیق بیشتر بود که فعالیت نکرده سشنش رو ببندی و نتیجه بگیری که فعال نیست.

با تشکر از پاسخ شما دوست گرامی.

روش شما مناسب میاد.

و روشی رو هم که دوستمان Syndrome گفت هم به نسبت مناسب میباشد.

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

تنها سوالم اینه که آیا این دو روش روشهای روز هستند یا خیر؟

آیا روشهای جدیدی در این باره وجود دارد؟

با تشکر...............

delphiprog3000
چهارشنبه 03 مهر 1387, 19:31 عصر
روش دوم به نظر من بهتر است.
برای هر کاربر یک User در SQL بسازید و در صورت Connect بودن User دیگر اجازه ورود به کاربر دیگر با همان نام را ندهید.
موفق باشید

با سلام به دوست گرامی.

ممنون میشم در این رابطه مثالی قرار دهید. و نحوه گرفتن sp_id و نام user رو نشان دهید.

آیا در این رابطه با اجرا کردن sp مورد نظر میتوان sp_id و نام یوزر با استفاده از Fieldvalues آن را فراخوانی کرد؟

با تشکر از توجه شما.............

SYNDROME
پنج شنبه 04 مهر 1387, 06:50 صبح
با سلام به دوست گرامی.

ممنون میشم در این رابطه مثالی قرار دهید. و نحوه گرفتن sp_id و نام user رو نشان دهید.

آیا در این رابطه با اجرا کردن sp مورد نظر میتوان sp_id و نام یوزر با استفاده از Fieldvalues آن را فراخوانی کرد؟

با تشکر از توجه شما.............
متاسفانه مثالی در این مورد ندارد.
ولی روش فوق را امین ثباتی در بخش SQLServer برای جلوگیری از ویرایش یک رکورد توسط چند کاربر به طور همزمان بیان کرده است.
که به نظر من یک راهکار مناسب است.
موفق باشید

حمیدرضاصادقیان
یک شنبه 07 مهر 1387, 23:35 عصر
سلام.هردو روشی که دوستان گفتن روش خوبی هست.من خودم از روش اول استفاده میکنم و به همون صورتی که ghabil جان گفت دارم اونو کنترل میکنم.فعلا هم مشکلی باهاش نداشتم.اتفاقا شاید با ذخیره کردن کاربر در یک جدول بتونی دسترسی های متفاوتی روی جداول ، قسمتهای مختلف برنامه تعریف کنی که در sql شاید امکان پیاده سازی یک همچین امری نباشه. به طورمثال در برنامه حسابداری که من نوشتم کاربر میتونه هر فرم رو بهش دسترسی های مختلف اعم از گرفتن چاپ، اضافه ، اصلاح ، حذف ، فقط اصلاح سندی که خودش ثبت کرده ، فقط ویرایش سندی که اخرین رکورد هست و...
به این صورت دست منو باز گذاشته .حالا باز بستگی به شرایط و نوع نرم افزار نیز داره. در یک سیستم مالی شما باید مدیریت کاربران خیلی قوی داشته باشی. تا مدیر مجموعه برای تعریف دسترسی برای کاربرانش به مشکل برخورد نکنه.چون سریعا صداش درمیاد.!!

SYNDROME
دوشنبه 08 مهر 1387, 06:33 صبح
سلام.هردو روشی که دوستان گفتن روش خوبی هست.من خودم از روش اول استفاده میکنم و به همون صورتی که ghabil جان گفت دارم اونو کنترل میکنم.فعلا هم مشکلی باهاش نداشتم.اتفاقا شاید با ذخیره کردن کاربر در یک جدول بتونی دسترسی های متفاوتی روی جداول ، قسمتهای مختلف برنامه تعریف کنی که در sql شاید امکان پیاده سازی یک همچین امری نباشه. به طورمثال در برنامه حسابداری که من نوشتم کاربر میتونه هر فرم رو بهش دسترسی های مختلف اعم از گرفتن چاپ، اضافه ، اصلاح ، حذف ، فقط اصلاح سندی که خودش ثبت کرده ، فقط ویرایش سندی که اخرین رکورد هست و...
به این صورت دست منو باز گذاشته .حالا باز بستگی به شرایط و نوع نرم افزار نیز داره. در یک سیستم مالی شما باید مدیریت کاربران خیلی قوی داشته باشی. تا مدیر مجموعه برای تعریف دسترسی برای کاربرانش به مشکل برخورد نکنه.چون سریعا صداش درمیاد.!!
حمید رضا جان شما در مورد دسترسی به منوهای برنامه گفتید که صحبتهای شما کاملاً درست است.
ولی دقت کنید که ما می خواهیم از ورود چند تا کاربر از طریق یک UserName جلوگیری کنیم.
ghabil گفت : اگر کاربر مثلاً اگر تا 10 دقیقه عملی انجام نداد یعنی از سیستم خارج شده است ولی به این نکته دقت کنید که اکثر کاربران صبح وارد سیستم می شوند و غروب خارج.
در این مدت ممکن است به دلایل گوناگون مانند نهار ، جلسه و . . . با سیستم مدتی کار نکنند که در این شرایط سیستم تشخیص می دهد کاربر خارج شده و اجازه ورود را به کاربر دیگری با همان UserName می دهد.
موفق باشید

delphiprog3000
شنبه 13 مهر 1387, 13:32 عصر
حمید رضا جان شما در مورد دسترسی به منوهای برنامه گفتید که صحبتهای شما کاملاً درست است.
ولی دقت کنید که ما می خواهیم از ورود چند تا کاربر از طریق یک UserName جلوگیری کنیم.
ghabil گفت : اگر کاربر مثلاً اگر تا 10 دقیقه عملی انجام نداد یعنی از سیستم خارج شده است ولی به این نکته دقت کنید که اکثر کاربران صبح وارد سیستم می شوند و غروب خارج.
در این مدت ممکن است به دلایل گوناگون مانند نهار ، جلسه و . . . با سیستم مدتی کار نکنند که در این شرایط سیستم تشخیص می دهد کاربر خارج شده و اجازه ورود را به کاربر دیگری با همان UserName می دهد.
موفق باشید

و یا اگر سیستم به دلیل نا معلومی خاموش شد. در انی صورت بازهم به این مشکل بر میخوریم...

آیا راه دوم به نظر بهینه تر نیست؟

delphiprog3000
شنبه 13 مهر 1387, 13:35 عصر
به طورمثال در برنامه حسابداری که من نوشتم کاربر میتونه هر فرم رو بهش دسترسی های مختلف اعم از گرفتن چاپ، اضافه ، اصلاح ، حذف ، فقط اصلاح سندی که خودش ثبت کرده ، فقط ویرایش سندی که اخرین رکورد هست و...
به این صورت دست منو باز گذاشته .حالا باز بستگی به شرایط و نوع نرم افزار نیز داره. در یک سیستم مالی شما باید مدیریت کاربران خیلی قوی داشته باشی. تا مدیر مجموعه برای تعریف دسترسی برای کاربرانش به مشکل برخورد نکنه.چون سریعا صداش درمیاد.!!

دوست گرامی شما برای کنترل اختیارات کاربران چه راهی رو پیشنهاد میکنید؟

مثلا کاربر حق حذف رو نداشته باشه. و از این قبیل اختیارات؟

به نظر شما با یه تایمر اختیارات کاربر رو چک کنیم کار جالبی به نظر میاد؟

در این مورد هم یه توضیح مختصر بدید.

با تشکر................

delphiprog3000
شنبه 13 مهر 1387, 13:38 عصر
به طورمثال در برنامه حسابداری که من نوشتم کاربر میتونه هر فرم رو بهش دسترسی های مختلف اعم از گرفتن چاپ، اضافه ، اصلاح ، حذف ، فقط اصلاح سندی که خودش ثبت کرده ، فقط ویرایش سندی که اخرین رکورد هست
به این صورت دست منو باز گذاشته .حالا باز بستگی به شرایط و نوع نرم افزار نیز داره. در یک سیستم مالی شما باید مدیریت کاربران خیلی قوی داشته باشی. تا مدیر مجموعه برای تعریف دسترسی برای کاربرانش به مشکل برخورد نکنه.چون سریعا صداش درمیاد.!!

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

مثلا اختیار حذف رو از کاربر به چه صورت میگیرید؟

حمیدرضاصادقیان
شنبه 13 مهر 1387, 14:05 عصر
سلام.یک جدول تهیه کردم. و تمامی ایتمها رو داخل اون جدول گذاشتم و در داخل هرکدوم یک عدد قرار میدهیم و باتوجه به ون عدد مشخص میشه هر بخشی چه کاری باید انجام بده.برای اینکه کاربران در سیستم هستند یا خیر یک فیلد state داریم که کنترل میکنیم. و کاربر مدیر نیز این امکان رو داره بقیه کاربران رو از سیستم بندازه بیرون.

SYNDROME
شنبه 13 مهر 1387, 17:57 عصر
و یا اگر سیستم به دلیل نا معلومی خاموش شد. در انی صورت بازهم به این مشکل بر میخوریم...

آیا راه دوم به نظر بهینه تر نیست؟
نه دوست عزیز.
در چنین مواقعی با خاموش شدن سیستم کاربر متصل به SQL از لیست کاربران فعال خارج می شود.
موفق باشید

delphiprog3000
یک شنبه 21 مهر 1387, 09:59 صبح
به طورمثال در برنامه حسابداری که من نوشتم کاربر میتونه هر فرم رو بهش دسترسی های مختلف اعم از گرفتن چاپ، اضافه ، اصلاح ، حذف ، فقط اصلاح سندی که خودش ثبت کرده ، فقط ویرایش سندی که اخرین رکورد هست و...
به این صورت دست منو باز گذاشته .حالا باز بستگی به شرایط و نوع نرم افزار نیز داره. در یک سیستم مالی شما باید مدیریت کاربران خیلی قوی داشته باشی. تا مدیر مجموعه برای تعریف دسترسی برای کاربرانش به مشکل برخورد نکنه.چون سریعا صداش درمیاد.!!


با سلام سوالم اینه که شما برای کنترل محدودیتهای کاربران چه راهی رو پیشنهاد میکنید؟

مثل حذف. با تایمر چک میکنید کدهارو و بعد اعمال محدودیت میکنید؟

با تشکر................

delphiprog3000
یک شنبه 21 مهر 1387, 10:03 صبح
نه دوست عزیز.
در چنین مواقعی با خاموش شدن سیستم کاربر متصل به SQL از لیست کاربران فعال خارج می شود.
موفق باشید

دوست من ممنون از پاسخت. ولی منظور بنده استفاده از Spid نبود. راهی که آقای صادقیان گفتند منظورم بود.

استفاده از Spid که مشخص وقتی قطعی رخ بده Sql به صورت اتوماتیک اون رو حذف میکنه.

اگه کسی از دوستان مثالی از استفاده پروسیجر sp_who رو بذار ممنون میشم.

با تشکر.............

حمیدرضاصادقیان
سه شنبه 23 مهر 1387, 12:07 عصر
سلام.ببینید در همون راهی که گفتم فیلدی هم گذاشتم که مشخصه اون کاربر هست یا نیست. خیلی راحت مدیر مجموعه میتونه یک کاربر رو غیر فعال کنه.و خودش بی هیچ مشکلی وارد سیستم بشه. فکر نمیکنم دیگه با این وضعیت مشکلی براش پیش بیاد.

delphiprog3000
چهارشنبه 24 مهر 1387, 11:47 صبح
سلام.ببینید در همون راهی که گفتم فیلدی هم گذاشتم که مشخصه اون کاربر هست یا نیست. خیلی راحت مدیر مجموعه میتونه یک کاربر رو غیر فعال کنه.و خودش بی هیچ مشکلی وارد سیستم بشه. فکر نمیکنم دیگه با این وضعیت مشکلی براش پیش بیاد.

دوست من در این زمینه مشکلی نیست.

منظور سطح های دسترسی رو به چه صورت کنترل میکنید؟

مثلا: اگر کاربر عادی وارد شد دکمه ثبت و حذف غیر فعال شود.

چون سیستم در حال اجراست و هر لحظه رویداد ها و عناصر اون تغییر میکنند . به همین منظور من شرط کنترل کاربران را در یک تایمر گذاشتم.

در ترد هم میشه گذاشت.

شما چه راهی رو پیشنهاد میکنید؟

با تشکر...........

حمیدرضاصادقیان
چهارشنبه 24 مهر 1387, 12:21 عصر
نه اصلا نیازی به اینکار نیست. من وقتی که کاربر وارد سیستم میخواد بشه تمامی تنظیماتش رو از جدول مربوطه میخونم. بعد در هرفرمی که میخواد وارد بشه در رویداد onshow اول دسترسی هاشو کنترل میکنم بعد اجازه کار بهش میدم.

matinebi
چهارشنبه 20 آذر 1387, 01:02 صبح
نه اصلا نیازی به اینکار نیست. من وقتی که کاربر وارد سیستم میخواد بشه تمامی تنظیماتش رو از جدول مربوطه میخونم. بعد در هرفرمی که میخواد وارد بشه در رویداد onshow اول دسترسی هاشو کنترل میکنم بعد اجازه کار بهش میدم.


چطور میتونم به مدیر این امکان رو بدم که هر موقع خواست کاربری رو بندازه بیرون البته در شبکه