میرے ساتھی ایک ویب حصہ ف ماحول میں کام کر رہی ہے. دیگر چیزوں کے علاوہ, ویب حصہ SQL سرور سے کچھ کوائف ھیںچتی. ایک د کوائف سطح سلامتی میں SQL کی تشکیل کرتا ہے کہ اس منصوبے کے لئے گرینڈ پلان گزرتا (کے طور پر ایک ایس کیو ایل کے استفسار میں ایک صارف ID یا کسی دوسرے نقطہ نظر سرایت کرنے کی مخالفت).
یہ ہم پر اعتماد نہیں کر سکتے تو SQL سرور ہمارے ف ماحول کے بارے میں کچھ معلوم نہیں ہے کہ یہ مسئلہ ہے. ہم نے اس مسئلے کو حل کیا, ایک بہتر لفظ کی کمی کے لئے, دستی طور پر ایک AD صارف امپرسناٹنگ تاکہ ایسا SQL ڈیٹا سلامتی کام درجہ ہم SQL سے نہیں جڑ سکا.
FBA ایک ASP.NET خصوصیت ہے اگرچہ, ہم شیئرپوائنٹ نیشن لوگ مختلف تلاش کے انجن سکھایا ہے کہ اگر آپ FBA کے لئے querying کر رہے ہیں تو, آپ کا مطلب ہوگا آپ چاہتے ہیں ف SharePoint میں تشکیل کرنے کا طریقہ جانتے ہیں. تلاش کرنے میں ناکام رہا کوئی معلومات پر کس طرح ایک ف اہل بنانے کے لیے ASP.NET کے ساتھ SQL ہم کی ضرورت ہے جس طرح میں بات چیت کے لیے ایپلی کیشن پر مبنی ڈھونڈیں.
اس تحقیق کے دوران میں, ہم دوبارہ پڑھا اس مضمون: ASP.NET نقالی
مزید تحقیق اس codproject مضمون ہمیں قیادت: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx
کہ ہمارے کوڈ لکھنے میں مدد دی, جن میں مندرجہ ذیل شامل ہے. یہ سب سے زیادہ خوبصورت چیزیں نہیں ہے, لیکن یہ کام کیا. مجھے امید ہے کہ آپ اس میں مفید.
ہمیں یہاں کے لئے کام کیا ہے کہ کوڈ ہے:
محفوظ صفر btnSearchCarrier_Click(اعتراض مرسل, EventArgs ای) { کرنے کی کوشش کریں { یو = ImpersonateUser نئے ImpersonateUser(); // تمام: اسناد بدل دیں ("دومیننمی", "صارف کا نام", 'پاس ورڈ'); // CODE // iU.Undo(); } پکڑنے (رعایت کی سابق) { } } // نقالی کلاس کا استعمال کرتے ہوئے کے طور پر ذیل میں ذکر. عوامی کلاس ImpersonateUser { [DllImport("advapi32.dll", SetLastError = سچ)] عوامی جامد بیرونی bool LogonUser( سلک lpszUsername, سلک lpszDomain, سلک lpszPassword, INT dwLogonType, INT dwLogonProvider, ریفری IntPtr phToken); [DllImport("kernel32.dll", چارسیٹ = CharSet.Auto)] نجی بیرونی جامد bool CloseHandle(IntPtr ہینڈل); نجی جامد IntPtr tokenHandle = نئے IntPtr(0); نجی جامد WindowsImpersonationContext impersonatedUser; // آپ کو ایک DLL میں اس کوڈ کو شامل تو, یہ مطالبہ کرنے کے لئے اس بات کا یقین // FullTrust کے ساتھ رنز. [PermissionSetAttribute(SecurityAction.Demand, = نام "فوللٹروسٹ")] عوامی بہروپ بھرنے خالی(سٹرنگ DOMAINNAME, سٹرنگ صارف کا نام, سٹرنگ پاس ورڈ) { کرنے کی کوشش کریں { // یوزر کے ٹوکن حاصل کرنے کے لئے غیر بندوبست کردہ LogonUser تقریب کا استعمال کریں // مخصوص صارف, ڈومین, اور پاس ورڈ. CONST INT LOGON32_PROVIDER_DEFAULT = 0; // اس پیرامیٹر پاسنگ LogonUser ایک بنیادی ٹوکن پیدا کرنے کا سبب بنتا ہے. CONST INT LOGON32_LOGON_INTERACTIVE = 2; tokenHandle = IntPtr.Zero; // مرحلہ -1 ایک رسائی ٹوکن کے لئے ایک ہینڈل حاصل کرنے کے لئے LogonUser کال کریں. bool returnValue = LogonUser( صارف کا نام, ڈومین کا نام, پاس ورڈ, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, پراپرٹی tokenHandle); // tokenHandle - نئے سیکورٹی ٹوکن اگر (جھوٹے == returnValue) { INT ret = Marshal.GetLastWin32Error(); Console.WriteLine("نقص ضابطہ کے ساتھ لوگونوسر کال ناکام ہوگئی : " + حق); پھینک نئے System.ComponentModel.Win32Exception(حق); } // مرحلہ - 2 WindowsIdentity = newId نئے WindowsIdentity(tokenHandle); // مرحلہ -3 impersonatedUser = newId.Impersonate(); } پکڑنے (رعایت کی سابق) { Console.WriteLine("استثنی واقع ہوا. " + ex.Message); } } /// <خلاصہ> /// نقالی رک جاتا ہے /// </خلاصہ> عوامی کالعدم کریں خالی() { impersonatedUser.Undo(); // ٹوکن آزاد. اگر (tokenHandle != IntPtr.Zero) CloseHandle(tokenHandle); } }
</آخر>