PDA

View Full Version : چک کردن سشن قبل از چک کردن دسترسی کاربر به اکشن ها



resident
چهارشنبه 06 شهریور 1392, 14:22 عصر
در خصوص CustomAuthentication پستی ایجاد کرده بودم و دوست عزیزمون younesdoost زحمت کشیدن کامل راهنمایی کردن.

اونجا یه کلاس CustomAuthentication ایجاد کردیم و داخلش متد AuthorizeCore رو override کردیم.داخل این متد مشخص می کردیم فرد به اون اکشن و کنترلر دسترسی داره یا نه.

حالا من داخل این متد به UserID نیاز دارم و باید اونو از session بخونم. اگه سشن منقضی شده باشه باید صفحه لاگین نمایش داده بشه.داخل AuthorizeCore نمیشه بگیم در صورت نال بودن سشن ،صفحه لاگین رو نمایش بده

چه راهی برای اینکار وجود داره؟قبل از چک کردن دسترسی ها قبل از هر اکشن، اول سشن باید بررسی بشه اگه نال بود صفحه لاگین نمایش داده بشه و اگه نال نبود دسترسی به اکشن چک بشه...

younesdoost
چهارشنبه 06 شهریور 1392, 18:11 عصر
این مربوط میشه به همون اتریبیوته [Authorize] که توهمون پست بحث شد.باید این اتریبوت رو بالای اتریبیوت [CustomAuthentication] بیارید.اگه نمیشه باید ببینید چرا نمیشه.

resident
دوشنبه 11 شهریور 1392, 20:08 عصر
فکر کردم شاید گذاشتن متد Session_End در Global.asax بد نباشه. اینطوری هم هر وقت سشن از بین بره اتوماتیک این متد اجرا میشه و دیگه نیازی نیست براش Filterبنویسیم.

داخب Session_End میخوام بنویسم به اکشن و کنترلر خاصی بره.

سه نوع دستر متفاوت گذاشتم ولی هیچ کدوم جواب نمیده.

اولیش:



var routeData = new RouteData();
routeData.Values["controller"] = "Account";
routeData.Values["action"] = "Login";
IController controller = new AccountController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);

controller.Execute(rc);





که Context نال است و Exception ایجاد می کنه.



دومیش:




Response.RedirectToRoute("Default");





و سومیش




HttpContext.Current.Response.Redirect("~/Controllers/AccountControllers/Login");



لطفا اگه کسی نمونه کدی داره برام بذاره، واقعا خستم کرده