الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إستخراج معلومات من ال TableAdapter وتخزينها بال Session

بدأه Mohannad Otaibi في 28 مارس 2010 · 4 رد · 1,044 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم إخواني

انا حالياً أعمل على project فيه نظام Users , يتم تخزين اليوزرات ومعلوماتهم في قاعدة MS SQL ملحقة بالبروجكت نفسه على شكل ملف

قمت بإنشاء TableAdapter لجدول اليوزر لكي أقوم بإنشاء إستعلامات عليه.

من الFunctions التي قمت بإنشاءها أو Queries بمعنى أصح ,, واحدة بإسم getUserByName بحيث تاخذ إسم اليوزر ك معطى وترجع صف كامل فيه الإسم والآي دي والباسورد والإيميل وما إلى ذلك

الآن , ما أريد عمله هو , في function الـ login بنفسها , بعد أن يتم التحقق من صحة اليوزر والباسورد الخاص به, أريد ان تقوم هذي الـ function بإدخال بيانات اليوزر في الـ Session ,

Session["name]=Mohannad

Session['id']=2

وما إلى ذلك

الهدف هو لإستخدامها لاحقاً من عدة صفحات ولأن لكل يوزر صلاحيات خاصة , محدده في جدول إسمه user_perms

أريد أن اقوم بوضع جميع صلاحيات هذا اليوزر في Session حيث أستطيع التحقق منه بكل صفحة والثانية هل لديه صلاحيات عليها أم لا.

المشكلة هي

قمت بإنشاء ال getUserByName

كيف أستطيع الإستفادة من نتائجها

هل هناك طريقة لأستطيع إستخدامها بالشكل التالي:

String[] something= userTableAdapter.getUserByName();

افيدوني بأفضل الطرق جزاكم الله خير

تم تعديل هذه المشاركة بواسطة Mohannad Otaibi في 28 مارس 2010 في 11:11

#2

السلام عليكم ورحمة الله وبركاته

أخى يمكنك الإستفادة من هذه الدالة getUserByName بعدة طرق سأذكر واحدة منها كالأتى

1. اجعل return type هوSqlDataReader

2. قم باستدعاء الدالة كالأتى

 SqlDataReader reader = getUserByName(usrname);
if (reader.Read())
{
//The User Name is Valid then store the data in session variables
session["UsrNm"]=reader["UserName"].ToString();
session["id"]=(int)reader["ID"];
session["role"]=(int)reader["RoleID"];
}
reader.close();

3.فى هذه الحالة كان جدول Users يحتوى على role

اما اذا كانت صلاحيات User فى جدول خاص مرتبط بجدول ال Users عن طريق ID

نستخدم هذا ID فى معرفة صلاحيات ال User عن طريق دالة جديدة بنفس طريقة دالة getUserByName() ولكن نعمل parameter هو ID اللى هنجيبه من دالة getUserByName()

تمام

يمكنك مناقشتى فيما تريد

والله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Sameh abd Elmonim في 28 مارس 2010 في 17:54

#3
Sameh abd Elmonim كتب:

السلام عليكم ورحمة الله وبركاته

أخى يمكنك الإستفادة من هذه الدالة getUserByName بعدة طرق سأذكر واحدة منها كالأتى

1. اجعل return type هوSqlDataReader

2. قم باستدعاء الدالة كالأتى

 SqlDataReader reader = getUserByName(usrname);
if (reader.Read())
{
//The User Name is Valid then store the data in session variables
session["UsrNm"]=reader["UserName"].ToString();
session["id"]=(int)reader["ID"];
session["role"]=(int)reader["RoleID"];
}
reader.close();

3.فى هذه الحالة كان جدول Users يحتوى على role

اما اذا كانت صلاحيات User فى جدول خاص مرتبط بجدول ال Users عن طريق ID

نستخدم هذا ID فى معرفة صلاحيات ال User عن طريق دالة جديدة بنفس طريقة دالة getUserByName() ولكن نعمل parameter هو ID اللى هنجيبه من دالة getUserByName()

تمام

يمكنك مناقشتى فيما تريد

والله ولى التوفيق

مشكور أخوي عالطريقة الحلوة

خليني اعطيك نبذة بسيطة عن ال structure عندي وقل لي إذا كنت تعتقد ان هناك خطا

لدي ال Data Access Layer هو عبارة عن DataSets تحتوي على الFunctions

لدي الBusiness Layer عبارة عن C# Classes بمجلد ال includes في البروجكت

وال Presentation layer هو نفس ملفات الـ aspx مع بعض التعليمات داخل aspx.cs إن كان الأمر يستدعي ذلك

بالنسبة ل صفحة login.aspx فهي تستخدم كلاس users.cs الذي يحتوي على ,

bool checkuser(string user, string pass)
DateTime getLastAccess()
void setLastAccess()
void registerSessionVars()

انا جعلت هذا الكلاس inherits من System.Web.UI.Page فقط لغرض واحد الا وهو إني أقدر اتعامل مع ال Session بشكل مباشر بهذه الطريقة

هل جعلي للكلاس INHERITS من Page أمر يسبب مشاكل ؟ أو فيه طريقة أسلم وأسهل استطيع إستخدامها ك جعل

void registerSessionVars()

يتقبل parameter أضع فيه ال Session من ملف login.aspx ؟

إن كان هذا صحيح , فماهو نوع Session , هل هو مصفوفة نصوص ؟ أو أوبجكت من نوع خاص

اتمنى مراجعة كلامي السابق وتصحيحي في أي نقطة إن كان هناك خطأ وطريقة أفضل

#4

بالمناسبة أخوي سعيد

ماقدر اغير ال return type حق getUserByName لان هذي الدالة دالة مدمجة من نفس ال tableAdapter

تقوم بإعادة dataTable

تم تعديل هذه المشاركة بواسطة Mohannad Otaibi في 29 مارس 2010 في 09:09

#5

محتاجين المساعدة ياخوان

مواضيع مشابهة