PDA

View Full Version : سوال: مشخص کردن اینکه کدام user در حال اجرای دستورات است



ehsan153
پنج شنبه 12 آذر 1388, 11:35 صبح
سلام دوستان
من می خوام از طریق برنامه نویسی مشخص کنم که کدام کاربر هست که در حال اجرای query میباشد.
چون کاربران مختلف دسترسی های مختلفی دارن و می خوام مطمئن شوم که کاربر x اجازه ی دسترسی به فلان table را دارد و کاربر y اجاره ی این دسترسی را ندارد.در محیط sql این کدو بلدم.execute as user
که که جلوی user یک علامت = سپس اسم user را مینویسیم اما در برنامه نویسی بلد نیستم.در ضمن درست کردن user,grant,deny هم میدونم.

ehsan153
جمعه 13 آذر 1388, 20:38 عصر
کسی نبود؟اگه کسی بخواهد user تعریف کنه وبعدش مشخص کنه که کدام user داره دستوراتو اجرا میکنه باید چه کار کرد؟

fjm11100
شنبه 14 آذر 1388, 08:54 صبح
سوالت برای من واضح نبود اما اگر میخوای توی کدت بدونی که کدام کاربرت داره کوئری اجرا میکنه میتونی همون جایی که داری کانکشن استرینگ را پاس میکنی اسم کاربر را ببینی!!!
اگه مشکلت را واضحتر بگی بهتر میتونم کمکت کنم

ehsan153
شنبه 14 آذر 1388, 09:30 صبح
سوالت برای من واضح نبود اما اگر میخوای توی کدت بدونی که کدام کاربرت داره کوئری اجرا میکنه میتونی همون جایی که داری کانکشن استرینگ را پاس میکنی اسم کاربر را ببینی!!!
اگه مشکلت را واضحتر بگی بهتر میتونم کمکت کنم
راستش منظور من اینه که به sqlserver بفهمونم که کسی که مثلا درخواست خواندن فلان table را داره کی هست که sqlserver ببینه که اون user آیا اجازه ی select آن table را دارد یا نه.(فرض کنید تعداد خیلی زیادی کامپیوتر داخل شبکه هست و باید مشخص بشه درخواستها از کدام کامپیوتر می آیند)
در ضمن من تو ساختن connection فقط میتونم نام login را مشخص کنم.(در sql هم ساخت login داریم هم ساخت user ) اگه میشد که مثلا تو connection یا هر جای دیگه نام user را مشخص میکردیم خیلی خوب میشد.در ضمن ممنون که به سوال من رسیدگی میکنی.

AliRezaPro
شنبه 14 آذر 1388, 09:42 صبح
یوزر شما قبل از استفاده از برنامه لاگین میکنه؟

ehsan153
شنبه 14 آذر 1388, 09:57 صبح
یوزر شما قبل از استفاده از برنامه لاگین میکنه؟
بله.کامل وصل میشم.و هر کاری بخوام میتونم انجام بدم.ولی همه که نباید دسترسی کامل را داشته باشند.

ab_ba
شنبه 14 آذر 1388, 11:11 صبح
سلام
آیا عکس زیر میتواند به شما کمک کند

ehsan153
شنبه 14 آذر 1388, 21:16 عصر
سلام
آیا عکس زیر میتواند به شما کمک کند
این عکس نشان میدهد که چگونه می شود permission های مختلف به کاربر داد ولی من می خوام بعد از این مرحله که شما نشان دادید از طریق ado یا کدنویسی مشخص کنم کدام user در حال اجرای query هست.مثلا.

select * from table

ما می خواهیم حالا مشخص کنیم بعد از اجرای این دستور توسط sqlcommand یا هر چیز دیگر چگونه sqlserver میفهمه که کدام user درخواست همچین query را داده که بعدش معلوم بشه آیا این user حق اجرای چنین دستوری داره یا نه.
در ضمن ما یک loginid داریم و یک userid که loginid برخی دسترسی ها مثل اجازه ی backup گرفتن واجازه ی درست کردن database و... رامشخص می کند ولی userid برخی دسترسی ها مثل اجازه ی select,insert,delete کردن یک table مشخص را معلوم میکند.در ضمن در دستور زیر ما loginid را مشخص میکنیم.

sqlconnection conn=new sqlconnection("server=(local);user='x';password='y';database=z")x

apanahi
شنبه 14 آذر 1388, 21:27 عصر
سلام
من حتما جوابتون را پيدا ميکنم فقط تو اين 72ساعت برام ميل بزنيد که يادم باشه جواب را تو اين تايپيک بزارم.
آخه من يه کم!!! فراموش ميکنم جوابا رو تو کدوم سايت بايد بزارم.

AliRezaPro
یک شنبه 15 آذر 1388, 02:04 صبح
شما برای هر یوزری که تعریف میکنید در اسکیول سرور یک فیلد هم برای پرمیژن در نظر بگیرید مثلا مدیر ،مسول ،کاربر عادی یا....
هنگام لاگین هم هر کدون ار اینایی که لاگین کردند براشون تو برنامه پرمیژن بزار مثلا فرم ها یا دکمه ها رو disable کن
وقتی طرف داره لاگین میکنه(سلکت میزنی)مقدار اخرین فیلد (پرمیژن)رو چک کن و نسبت به هر کدوم تو برنامه حق دسترسی بده

ehsan153
یک شنبه 15 آذر 1388, 10:54 صبح
دوستان از راهنمای هایتان ممنون.فکر کنم راهش را پیدا کردم.

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

CREATE LOGIN user87 WITH PASSWORD = 'pa$$word'x
بعد یک user درست می کنیم و به login نسبت میدهیم

CREATE USER user87 FOR LOGIN user87

حالا به user می توانیم دسترسی مختلف بدهیم.

grant select,inser on table to user87

حالا می توانیم با login بالا به database وصل بشیم.

sqlconnection conn=new sqlconnecton("server =(local);uid='user87';pwd='pa$$word';database=x)x

فقط نمی دونم راه بهتری هست یا نه؟یعنی اگه 100 تا user داریم باید 100 تا login هم داشته باشیم؟

razavi_university
یک شنبه 15 آذر 1388, 14:42 عصر
خب گروه بسازید. مثلا گروه کاربران محدود (فقط برای Select ) و گروه کاربران ارشد (برای Select,Insert,Update) و ... و کاربرانی که میخواهید را عضو این گروه ها بکنید

ehsan153
یک شنبه 15 آذر 1388, 18:02 عصر
خب گروه بسازید. مثلا گروه کاربران محدود (فقط برای Select ) و گروه کاربران ارشد (برای Select,Insert,Update) و ... و کاربرانی که میخواهید را عضو این گروه ها بکنید
برای user میشه login تعریف کرد ولی برای role نمیشه.role برای این خوبه که با کمکش میشه چند تا user با یک دسترسی خاص تعیین کرد.

mnasrin
پنج شنبه 19 آذر 1388, 11:54 صبح
دوستان از راهنمای هایتان ممنون.فکر کنم راهش را پیدا کردم.

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


CREATE LOGIN user87 WITH PASSWORD = 'pa$$word'x


بعد یک user درست می کنیم و به login نسبت میدهیم


CREATE USER user87 FOR LOGIN user87



حالا به user می توانیم دسترسی مختلف بدهیم.




grant select,inser on table to user87





حالا می توانیم با login بالا به database وصل بشیم.




sqlconnection conn=new sqlconnecton("server =(local);uid='user87';pwd='pa$$word';database=x)x





فقط نمی دونم راه بهتری هست یا نه؟یعنی اگه 100 تا user داریم باید 100 تا login هم داشته باشیم؟



















دوست گرامی آیا تونستی به نتیجه ای برسی . منم مشکلم همینه اگر به جایی رسیدی برای من هم بگو

اَرژنگ
پنج شنبه 19 آذر 1388, 18:17 عصر
دوست گرامی آیا تونستی به نتیجه ای برسی . منم مشکلم همینه اگر به جایی رسیدی برای من هم بگو

جناب razavi_university جواب درست و اصولی را دادند.
برایه ادامه در مورد جوابشان تحقیق کنید، روشهایه دیگر که اراعه شد من درآوردی و غیره اصولی هستند که برایه سرهم آوردن ممکنه کافی باشند ولی اصلاً اعتبار ندارند.