2013-03-27 3 views
6

मैं .NET के लिए बहुत नया हूं - मैं ऐसी साइट बना रहा हूं जिसमें एक व्यवस्थापक अनुभाग है जो केवल उपयोगकर्ताओं में लॉग इन होना चाहिए। मैंने लॉगिन कोड बनाया है और एक बार जब उपयोगकर्ता प्रमाणीकृत हो जाता है, तो मैं उन्हें एक सत्र चर निर्दिष्ट करता हूं। मेरा प्रश्न है: क्या प्रत्येक पृष्ठ पर निम्न फ़ंक्शन होने के बजाय सत्र चर की जांच करने का एक और अधिक प्रभावी तरीका है? कृपयाचेक सत्र?

protected void Page_Load(object sender, EventArgs e) 
{ 
     checkSession(); 

} 
public void checkSession() 
{ 
    if (Session["LoggedIn"] != "true") 
    { 
     Response.Redirect("default.aspx"); 
    } 
} 

धन्यवाद!

+0

आपके पास कक्षा में चेक सत्र() फ़ंक्शन हो सकता है, जो बदले में आप cls.checkSession() को कॉल कर सकते हैं और एक बूल वापस कर सकते हैं; – Csharp

+0

आपको 'फॉर्म प्रमाणीकरण' के साथ रहना होगा जो 'कुकी' –

+0

का उपयोग क्यों करता है "सत्य"? इसके बजाए सच का प्रयोग करें। –

उत्तर

5

आप उपयोग कर रहे हैं एक MasterPage आप MasterPage's Page_Load घटना में जाँच कोड डाल अगर उपयोग नहीं कर सकते या तो Global.asax या एक कस्टम HttpModule और के लिए AcquireRequestState ईवेंट हैंडलर के अंदर cheking कोड डाल पहली और Global.asax साथ

public class Global : System.Web.HttpApplication 
{ ... 
    void Application_AcquireRequestState(object sender, EventArgs e) 
    {    
     HttpContext context = HttpContext.Current; 
     // CheckSession() inlined 
     if (context.Session["LoggedIn"] != "true") 
     { 
      context.Response.Redirect("default.aspx"); 
     } 
    } 
    ... 
} 
दूसरा

उदाहरण के लिए PostRequestHandlerExecute ईवेंट हैंडलर

+0

धन्यवाद! मुझे लगता है कि यह मेरे लिए सबसे अच्छा समाधान है। – Dashsa

+1

ERR_TOO_MANY_REDIRECTS – Elshan

+0

डिफ़ॉल्ट.aspx पर रीडायरेक्ट करते समय, अभी भी लॉग नहीं किया गया है, इसलिए डिफ़ॉल्ट रूप से फिर से पुनर्निर्देशित करें .aspx – Snote

2

कि अपने सत्र की जांच कोड

जोड़कर पृष्ठ

ओवरराइड लोड विधि से निकला एक कस्टम वर्ग से अपने पृष्ठों प्राप्त अब आपके सभी पृष्ठों सत्यापन

public class MyPage : System.Web.UI.Page 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["yoursession"] != "true") 
    { 
    //code 
    } 
} 



public class yourCustomPage1 : MyPage 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    //you don't have to check or call any method.. 
} 
} 

public class yourCustomPage2 : MyPage 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    //you don't have to check or call any method.. 
} 
} 

आदि है ..

+1

यह कोड नमूना होना उपयोगी होगा जो इसे चित्रित करता है। –

+0

मैं उस – RollRoll

1

आप अपने पृष्ठ को एक क्लास बना सकते हैं जो बेस क्लास से प्राप्त होता है जो उपयोगकर्ताओं में लॉग इन की जांच करता है।

3

तुम शायद रूपों प्रमाणीकरण का उपयोग पर विचार करना चाहिए:
http://www.asp.net/web-forms/videos/authentication/using-basic-forms-authentication-in-aspnet

आप एक पृष्ठ कॉन्फ़िगर कर सकते हैं, या फ़ोल्डर हमेशा की तरह, प्राधिकरण की आवश्यकता है ताकि क्रम कि आवश्यकता की देखभाल के बजाय आप मैन्युअल रूप से जाँच करने के लिए हो रही होगी।

+1

पर काम कर रहा हूं प्रपत्र प्रमाणीकरण भी एक अच्छी तरह से गोल सुरक्षा प्रणाली है और सरल सत्र जांच पर कई फायदे शामिल हैं, देखें: http://support.microsoft.com/kb/910443 – Liam

1

एएसपी.Net में फॉर्म प्रमाणीकरण को समझने के लिए शुरू करने का एक अच्छा तरीका एक नई वेबसाइट बना रहा है। विजुअल स्टूडियो में जाएं और नई परियोजना बनाएं, वेब का चयन करें, फिर एएसपी.नेट वेब एप्लिकेशन। प्रक्रिया और एएसपी.Net विधियों को समझने के लिए खाता फ़ोल्डर में इसे देखें।

0

आप बेसपेज बना सकते हैं और इस बेस पेज से अपने सभी पेज का उत्तराधिकारी बना सकते हैं, फ़ंक्शन को अपने बेसपृष्ठ में सेट कर सकते हैं।

public class BasePage : Page 
{ 
    protected void checkSession() 
    { 
    if (Session["LoggedIn"] != "true") 
    { 
     Response.Redirect("default.aspx"); 
    } 
    } 
} 

आपके पेज

public partial class YourPage : BasePage 
{ 
.... 
} 

एक अन्य समाधान:

अपने HTTP मॉड्यूल में,, authentification और प्राधिकरण functionnalities सेट करने के लिए प्रधान (भूमिकाएँ) बना सकते हैं और पहचान अपने http मॉड्यूल में शोध करे देते हैं वर्तमान धागे के लिए सूचनाएं।

लिंक: http://msdn.microsoft.com/en-us/library/system.security.principal.iidentity.isauthenticated.aspx

0
  public class BasePage : Page 
      { 
      protected void checkSession() 
       { 
        if (Session["LoggedIn"] == null) 
        { 
          Response.Redirect("~/default.aspx/"); 
        } 
       } 
      } 
0

पहला रास्ता: Global.asax।सीएस

void Application_AcquireRequestState(object sender, EventArgs e) 
    { 
     HttpContext context = HttpContext.Current; 
     Page page = context.Handler as Page; 

     if ((string)context.Session["LoggedIn"] != "true" 
      && !(page.AppRelativeVirtualPath == "~/Default.aspx")) 
      context.Response.Redirect("default.aspx"); 
    } 

दूसरा तरीका: आप मास्टर पेज में एक ही सत्र प्रबंधन कर सकते हैं। पृष्ठ लोड घटना।

उम्मीद है कि इससे मदद मिलती है।