PDA

View Full Version : تغيير كانكشن استرينگ براي هر كاربر بعد از لاگين



* joodi *
شنبه 03 تیر 1391, 13:20 عصر
با سلام
من در اين مورد سرچ كردم اما به نتيجه اي كه كمكم بكنه نرسيدم. ممنون ميشم به صورت واضح توضيح بديد چه بايد بكنم.

من ميخوام بعد از اينكه كاربر نام كاربري و پسورد خود را وارد كرد كانكشن استرينگ تغيير كرده و اگر چنين لاگيني در ديتابيس براي اين كاربر وجود داشت با همان لاگين به بانك متصل شود و ...

براي اينكار كانكشن استرينگ رو به صورت دايناميك در فايل وب دات كانفيگ تغيير دادم ولي به مشكلاتي برخورد كردم :
1- مجبور بودم دوبار پسورد را وارد كنم تا كاربر لاگين شود. بار اول وارد نميشد!

2- و اين سوال برام پيش اومد كه اگر پروژه آپلود بشه و چندين كاربر همزمان به بانك متصل شوند آيا با تغيير مداوم وب دات كانفيگ براي هر كاربر مشكلي پيش نمياد؟

به اين نتيجه رسيدم تغيير در فايل وب دات كانفيگ ظاهرا درست نيست. ولي باز هم صد در صد مطمئن نيستم.

چه روشي پيشنهاد ميكنيد؟

alonemm
شنبه 03 تیر 1391, 13:33 عصر
باسلام:

تغییر در فایل وب کانفیگ به این صورت کاملا اشتباه میباشد.
بهتره در صورت نیاز رشته اتصال رو از فایل وب کانفیگ بخونید و با String.format رشته ها رو جای گزاری کنید.

<add key="ConncetionString1" value="User ID=ssssssa;Password=1368;Initial Catalog={0};Data Source=MAJID-PC\MSSQLSERVER2008">


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

* joodi *
شنبه 03 تیر 1391, 13:55 عصر
ممنونم از راهنماييتون
من نميخوام همه ي كاربرها به همه ي تيبل ها دسترسي داشته باشند در واقع ميخوام علاوه بر سطح دسترسي كه در سورس برنامه ميزارم روي بانك هم يك جور محكم كاري انجام بدم و با استفاده از رول ها كه به هر يوزر و لاگين ست ميكنم راه دسترسي به ديتاي غير ضروري رو براي كاربر ببندم براي اينكار حتما بايد هر كاربر لاگين منحصر به فرد به اس كيو ال داشته باشد. اميدوارم درست و واضح توضيح داده باشم.
اين كديست كه من براي تغيير وب دات كانفيگ نوشتم :


string Value = Cod.ToString() + "_" + Txt_UserName.Text;
string str = "server=192.168.1.10 ;database=Monaghese; User ID=" + Value + "; Password=" + Txt_Pass.Text + "";
System.Configuration.Configuration dynConfig = WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection connStringSection = (ConnectionStringsSection)dynConfig.GetSection("connectionStrings");
ConnectionStringSettings StringSettings = new ConnectionStringSettings("MonagheseConnectionString", "Data Source=192.168.1.2;Database=Monaghese;User ID=" + Value + ";Password=" + Txt_Pass.Text + ";");
AppSettingsSection appsetting = (AppSettingsSection)dynConfig.GetSection("appSettings");
appsetting.Settings["ConStr"].Value = str;
connStringSection.ConnectionStrings.Remove(StringS ettings);
connStringSection.ConnectionStrings.Add(StringSett ings);
dynConfig.Save(ConfigurationSaveMode.Modified);

* joodi *
یک شنبه 04 تیر 1391, 07:49 صبح
سلام مجدد

يعني بين اين همه اساتيد كسي بلد نيست چطور ميشه كانكشن رو براي هر كاربر تغيير داد؟؟!!

moferferi
یک شنبه 04 تیر 1391, 08:43 صبح
بهترین راه همینه که alonemm (http://barnamenevis.org/member.php?127814-alonemm) گفتن
شما اگه بخوای وب کانفیگ را تغییر بدی اول باید به اون خاصیت رایت بدی.یعنی از حالت read only درش بیاری که این خودش از نظر امنیتی اشتباه بزرگیه.

* joodi *
یک شنبه 04 تیر 1391, 10:01 صبح
ممنونم
من تا بحال چنين كاري انجام ندادم ميشه همراه با مثال توضيح بديد؟
بعد از خوندن رشته اتصال از وب كانفيگ و جايگزيني و ساخت رشته اتصال رشته اتصال رو چه جوري ذخيره كنم كه امن باشه و بتونم به لايه DAL بفرستم با توجه به اينكه نميخوام از سشن استفاده كنم از يك كلاس به صورت پابليك استفاده ميكنم اما باز هم جواب نميدهد. جايي خوندم كه ميشه كانكشن استرينگ رو براي هر كاربر در بانك ذخيره كرد!!! ولي باز هم فكر نميكنم ذخيره همه ي كانكشن ها در بانك از نظر امنيتي چندان جالب باشه!