PDA

View Full Version : جلوگیری از اجرای مجدد Application_AuthenticateRequest



ahmad156
سه شنبه 17 بهمن 1391, 18:28 عصر
سلام دوستان
تابع بالا در Global.asax به ازای هر درخواست هر فایل از سرور یه بار اجرا میشه .میخواستم برای جلوگیری از اجرای مجدد اون چه کار کنم؟یا اینکه باید اجرا بشه!!
البته من با vs2010 اجرا کردم دیدم چند بار اجرا شد و چند جا دیدم که گفته بودن وقتی Publish میشه روی هاست به ازای هر postback فقط یه بار اجرا میشه!

alihassanabadi
چهارشنبه 18 بهمن 1391, 17:41 عصر
سلام
این کاریه که این متد به صورت ضمنی و اتوماتیک انجام میده و منطقی هم هست که به ازای هر پست بک یک بار انجام بشه
به نظر من شما دارید قضیه رو دور میزند
سعی کنید کد های زیاد تو این متد ننویسید فقط در حد اهراز هویت باشه
و بی خیال شید که چند بار اجرا میشه
اگه واقعا بهش نیاز نداری تو این متد کد نزن.

ahmad156
چهارشنبه 18 بهمن 1391, 17:58 عصر
دوست عزیز به ازای هر postback چندین بار اجرا میشه یعنی به ازای درخواست هر فایل (image,js,css,aspxو ...) یک بار اجرا میشه.
کد من به صورت زیر هستش

HttpCookie cookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
FormsAuthenticationTicket ticket2 = new FormsAuthenticationTicket(1,ticket.Name, DateTime.Now, DateTime.Now.AddHours(60), ticket.IsPersistent, ticket.UserData);
FormsIdentity identity = new FormsIdentity(ticket2);
GenericPrincipal principal =new GenericPrincipal(identity, new string[] { ticket2.UserData });
Context.User = principal;
}

من اینکار برای مواردی که Session کاربر هنوز وجود داره ولی تازه میخواد وارد سیستم بشه انجام دادم تا در Page_Load صفحه Login به صفحه اصلی Redirect بشه
یه سوال دیگه که داشتم اینه که وقتی مستقیما Ticket رو Decrypt میکنم و یه FormsAuthenticationTicket میسازم همه اطلاعات اش درسته و مقدار UserData مربوطه هم مقدار Role کاربر رو داره ولی User.IsInRole مقدار false رو برمیگردوند و مجبور تا به صورت دستی یه FormsAuthenticationTicket درست کنم مثل بالا تا اینکه درست کار کرد.دلیلش رو ندونستم

ahmad156
یک شنبه 18 فروردین 1392, 12:16 عصر
عزیزان نظری ندارن؟

hamidreza1376
یک شنبه 18 فروردین 1392, 21:39 عصر
سلام.
خب آدرس صفحه ای که ازش درخواست ارسال می شه رو بگیر و بگو مثلاً اگه صفحه لوگین بود این کدها اجرا بشن.

ahmad156
دوشنبه 19 فروردین 1392, 09:56 صبح
دوست عزیز سوال رو خوندی؟؟