PDA

View Full Version : سوال: بهترین راه انتقال چندین مقدار از صفحه لاگین



usef64
پنج شنبه 04 مهر 1392, 08:39 صبح
با سلام.

من میخوام در صفحه لاگین، اطلاعات کاربر لاگین کننده (مثل اسم، کد پرسنلی، سمت و ...) رو بخونم و توی صفحات بعدیم از اونا استفاده کنم. خودم دارم از session استفاده میکنم ولی حس میکنم حافظه زیاد مصرف کنه، راه بهتری وجود داره؟

parvizwpf
پنج شنبه 04 مهر 1392, 11:50 صبح
ببینید سشن در تمام زمان لاگین بودن فرد داره خونده میشه حالا یا کوکی. بستگی دار که چی دارید به آبجکت سشن بار میکنید که حافظه زیاد بگیره یا نه ولی اگر ار تولهای خود دات نت کمک بگیرید چیزی بنام loginView داره.

Peyman.Gh
پنج شنبه 04 مهر 1392, 12:04 عصر
برای هر فیلد یک Session مجزا در نظر گرفته اید ؟!

fakhravari
پنج شنبه 04 مهر 1392, 18:38 عصر
يك كلاس موجوديت را در سشن بزاريد. مثلا كلاس يوزر كه ورود مي كنه

usef64
دوشنبه 08 مهر 1392, 09:32 صبح
آره،برای هر کدوم، یه سشن جدا گرفتم. کارم غلطه؟

mohammad kafiyan
دوشنبه 08 مهر 1392, 20:32 عصر
اگر ار تولهای خود دات نت کمک بگیرید چیزی بنام loginView داره.

این که فقط username را بر می گرداند
ما نیاز داریم مثلا مشخصات نام و نام خانوادگی و تصویر طرف را نمایش بدهیم آیا باز هم امکان پذیر هست که از loginview استفاده کنیم



آره،برای هر کدوم، یه سشن جدا گرفتم. کارم غلطه؟

این خیلی مهم است که سایت شما چه تعداد بازدید کننده در هر لحظه به طور متوسط داره و اینکه قرار است چه تعداد فیلد را با session جابه جا کنی
مثل مثالی که بالا زدم
دوستان اگر راهی در این زمینه دارند ممنون می شم راهنمایی کنند
البته در بعضی از تالارها دیده بودم که گفته بودند به جای session می توانی از کوکی استفاده کنیم نظر دوستان در این مورد چیست؟؟؟

usef64
دوشنبه 15 مهر 1392, 08:48 صبح
بچه هاااااا بلاخره چیکار کنم؟با همون سشن کار کنم؟

Alghoochi
دوشنبه 15 مهر 1392, 11:52 صبح
با سلام.

من میخوام در صفحه لاگین، اطلاعات کاربر لاگین کننده (مثل اسم، کد پرسنلی، سمت و ...) رو بخونم و توی صفحات بعدیم از اونا استفاده کنم. خودم دارم از session استفاده میکنم ولی حس میکنم حافظه زیاد مصرف کنه، راه بهتری وجود داره؟

وقتی شما تو صفحه‌ی اول اطلاعات رو از کاربر گرفتی و بعد از اعتبارسنجی و اهراز هویت کاربر به صفحه‌ی بعد منتقل شد، می‌تونی کل اطلاعاتی که می‌خوای رو از بانک بخونی. همون‌طور که یکی از دوستان گفت با LoginView می‌تونی یوزر رو به دست بیاری و با یوزر هم خیلی راحت میشه اطلاعات رو از بانک خوند.

i.RB92
دوشنبه 15 مهر 1392, 12:50 عصر
وقتی شما تو صفحه‌ی اول اطلاعات رو از کاربر گرفتی و بعد از اعتبارسنجی و اهراز هویت کاربر به صفحه‌ی بعد منتقل شد، می‌تونی کل اطلاعاتی که می‌خوای رو از بانک بخونی. همون‌طور که یکی از دوستان گفت با LoginView می‌تونی یوزر رو به دست بیاری و با یوزر هم خیلی راحت میشه اطلاعات رو از بانک خوند.
دقیقا بهترین کاری که میشه کرد همینه، هیچ مصرف حافظه ای نداره.
خیلی جالبه که بعضی ها استفاده از سشن و قراردادن کل یه آبجکت تو سشن رو پیشنهاد میدن!

fakhravari
دوشنبه 15 مهر 1392, 17:49 عصر
پست 4 :چشمک:

usef64
شنبه 11 آبان 1392, 14:53 عصر
جناب Alghoochi یعنی به نظر شما،توی هر صفحه من به DB کانکت بشم و اطلاعات رو بخونم، بهتر از استفاده از session هست؟

آقای فخراوری میشه لطفا یه مثال بزنید.

Mag-Mag
شنبه 11 آبان 1392, 15:23 عصر
شما در زمان لاگین بعد از کارهای امنیتی فقط id کاربر رو بریز در سشن

حالا هر صفحه که اطلاعات دبگری از کاربر رو لازم داشتی با استفاده از session["userid"] می تونی یک سایر اطلاعات رو از db بخونی

حالا نوع عملیات و کار سایت شما هم این وسط مهمه
مثلا اگر توی همه ی صفحه ها نام کاربری طرف رو لازم داری و خیلی کاربردی هست میتونی اون رو هم در سشن داشته باشی
یاید دقت کنی که حافظه سشن ها محدود هست
اگر بیش از حد از این حافظه استفاده کنی وقتی سایتت رو آپلود کردی بکسره با حطای server time out مواجه میشی

شما در بالای هر صفحه یک بار با استفاده از سشن id کاربر یک ابجکت از کلاس user درست کنی (select * from users where id=session["userid"])
خیلی بهتره تا اون همه اطلاعات رو در سشن بریزی

fakhravari
شنبه 11 آبان 1392, 20:53 عصر
توی موارد بزرگتر شما یک کلاس در سشن می زارید.
یک کلاس مثلا موجودیت دانشجو استاد و .....

ashkandehnavi
شنبه 11 آبان 1392, 21:01 عصر
شما میتونید یک آرایه از اطلاعاتی که لازم دارید درست کنید بعد اون آرایه رو توی session بریزید بعد هرجای سایت که خواستید اطلاعات session رو میتونید توی آرایه بریزید و به محتویاتش به راحتی دسترسی داشته باشید

mohammad kafiyan
یک شنبه 12 آبان 1392, 00:16 صبح
توی موارد بزرگتر شما یک کلاس در سشن می زارید.
یک کلاس مثلا موجودیت دانشجو استاد و .....
جناب آقای فخر آوری لطفا نمونه کد بگذارید تا ببینم این نمونه کلاس چی هست



یک آرایه از اطلاعاتی که لازم دارید درست کنید بعد اون آرایه رو توی session بریزید بعد هرجای سایت که خواستید اطلاعات session رو میتونید توی آرایه بریزید
نمونه کد می گذارید تا ببینیم چگونه است

ashkandehnavi
یک شنبه 12 آبان 1392, 12:25 عصر
string[] user = new string[3];
user[0] = "name";
user[1] = "family";
user[2] = "userName";
user[3] = "Email";
Session["User"] = user;




string[] user = Session["User"] as string[];
name=user[0];
family=user[1];
.
.
.

bomb23
یک شنبه 12 آبان 1392, 12:40 عصر
سلام از یک کلاس استفاده کنید و متد سینگلتون.

mohammad kafiyan
یک شنبه 12 آبان 1392, 20:17 عصر
خیلی ممنون دوست عزیز ashkandehnavi (http://barnamenevis.org/member.php?236975-ashkandehnavi) پست شماره 6 را بررسی کنید اگر تعداد کاربران بازدید کننده زیاد باشه و بخواهیم برای هرکدام از کاربران یک session در حافظه ایجاد بشه با توجه به محدودیت حافظه ی سرور که ممکنه از چندین سایت در آن لحظه پشتیابنی می کنه اون وقت ممکنه چه اتفاقی بیفتد



سلام از یک کلاس استفاده کنید و متد سینگلتون.

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

mRizvandi
دوشنبه 13 آبان 1392, 01:27 صبح
وقتی از امکانات آماده، بهینه و مدیریت شده ASP.NET استفاده نکنید همچین مسائلی هم پیش می آد.
دوست عزیز بهتره به جای این کار از Membership و Profile استفاده کنی. اینطوری نیازی به هیچ Session هم نیست. هر زمان که نیاز داشتی می تونی اطلاعات Membership و Profile کاربر رو به راحتی به دست بیاری.

به هر حال اگر خواستید همین روش خودتون رو پیش برید:
در نهایت می تونید یک کلاس بر اساس فیلدهای کاربر داشته باشید که یک نمونه از اون رو می تونید در Session قرار بدید
اگر به هیچ متدی نیاز ندارید بهتره به جای کلاس از Struct استفاده کنید



Public Class UserInformation
{
public string UserName {get; set;}
public string FirstName {get;set;}
, ...
}

Public Struct UserInformation
{
public string UserName {get; set;}
public string FirstName {get;set;}
, ...
}

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



UserInformation logedInUser;


logedInUser.UserName=....


logedInUser.FirstName=...

پر کردن Session بر اساس نمونه ساخته شده





Session["LogedInUser"]=logedInUser;


بدست آوردن مقادیر ذخیره شده در Session:




UserInformation logedInUser;


logedInUser = (UserInformation)Session["LogedInUser"];

mohammad kafiyan
سه شنبه 14 آبان 1392, 00:36 صبح
من هم با شما موافقم اما بهتره به جای استفاده از database خود مایکروسافت
جداول مورد نیاز خودمون را بسازیم و از role provider,memebership provider,profile provider استفاده کنیم آیا از دوستان کسی در این زمینه آموزشی داره که قرار بدهد

mRizvandi
چهارشنبه 15 آبان 1392, 13:45 عصر
من هم با شما موافقم اما بهتره به جای استفاده از database خود مایکروسافت
جداول مورد نیاز خودمون را بسازیم و از role provider,memebership provider,profile provider استفاده کنیم آیا از دوستان کسی در این زمینه آموزشی داره که قرار بدهد

تشکر دوست خوبم، اما چه زمانی نیاز میشه که شما بخواهید امکانات خود ASP.NET رو تغییر بدید؟
مقاله انگلیسی در این زمینه زیاد هست. اگر کسی مطلبی نذاشت میتونم یه نمونه تهیه کنم و توی سایت بذارم که دوستان استفاده کنند.

mohammad kafiyan
پنج شنبه 16 آبان 1392, 01:05 صبح
خوش می کنم اختیار دارید
اگر دوستان که در این زمینه کار کردند و به تجربه دارند کمک کنند تا یک آموزش خوب در زمینه role provider,memebership provider,profile provider تهیه کنیم البته با همکاری دوستان