12

से एक्शन विधि पर रीडायरेक्ट करें मैंने अपने बेस कंट्रोलर क्लास में विधि प्रारंभ की है जिसे किसी भी एक्शन विधि को निष्पादित किया जाता है। प्रत्येक एक्शन विधि पर, मैं अपना सत्र देखना चाहता हूं और यदि यह शून्य है तो इसे लॉगिन पेज पर रीडायरेक्ट करना चाहिए।बेस कंट्रोलर

public class BaseController : Controller 
{ 
    protected IDataRepository _appData = new DataRepository(); 

    protected override void Initialize(RequestContext requestContext) 
    { 
     base.Initialize(requestContext); 

     if (SessionFactory.CurrentAdminUser == null) 
     { 
      RedirectToLogin(); 
     } 
    } 
} 
public ActionResult RedirectToLogin() 
    { 
     return RedirectToAction("AdminLogin", "Admin"); 
    } 

यह इस विधि कॉल कर रहा है लेकिन व्यवस्थापक प्रवेश पद्धति के लिए पुनः निर्देशित और पर निष्पादन और कॉल तरीका है जिसके प्रवाह में है, इसलिए त्रुटि आ जाएगा रहता है नहीं।

संक्षेप में मैं यह जांचना चाहता हूं कि जब भी मेरा एप्लिकेशन सत्र शून्य हो जाए तो उसे लॉगिन पृष्ठ पर फिर से जाना चाहिए और सभी विधियों को जांचना सुविधाजनक नहीं है। कृपया मुझे कुछ अच्छा तरीका सुझाएं।

उत्तर

15

आप RedirectToLogin पर कॉल कर रहे हैं जो बदले में RedirectToActionResult देता है कि कोई भी इसका उपयोग नहीं कर रहा है, और यह प्रक्रिया के प्रवाह को प्रभावित नहीं करता है। वैकल्पिक रूप से, अगर आप Initialize अधिभावी पर जोर देते हैं

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    base.OnActionExecuting(); 

    if (SessionFactory.CurrentAdminUser == null) 
     filterContext.Result = new RedirectResult(Url.Action("AdminLogin", "Admin")); 
} 

,: के

protected override void Initialize(RequestContext requestContext) 
{ 
    base.Initialize(requestContext); 

    if (SessionFactory.CurrentAdminUser == null) 
    { 
     requestContext.HttpContext.Response.Clear(); 
     requestContext.HttpContext.Response.Redirect(Url.Action("AdminLogin", "Admin")); 
     requestContext.HttpContext.Response.End(); 
    } 
} 

, [Authorize] फिल्टर की जाँच करें, यह आपकी आवश्यकताओं के अनुकूल हो सकता है

इस बजाय का प्रयास करें। here देखें।

+0

आपकी सलाह के लिए धन्यवाद, लेकिन मैं Url.Action का उपयोग नहीं कर सका। क्या आप सलाह दे सकते हैं कि उस यूआरएल के लिए मुझे कौन सी असेंबली की आवश्यकता है? – Silvia

+1

@ सिल्विया, मुझे लगता है कि यह 'System.Web.Mvc' है – haim770

संबंधित मुद्दे