2015-11-26 3 views
12

मैं अपना पहला एएसपी.नेट वेब एपीआई एप्लिकेशन लिख रहा हूं। मैं अन्य वेब अनुप्रयोग ढांचे (ज्यादातर सिम्फनी, बल्कि Django, और कुछ हद तक RoR) से परिचित हूं।अनुरोधों पर राज्य को पुनर्प्राप्त करना और जारी रखना

मैं ब्राउज़र/फ्रंट एंड क्लाइंट से अनुरोध को वेब सर्वर पर भेजे जाने के बाद होने वाली घटनाओं के अनुक्रम को समझने के लिए थोड़ा सा संघर्ष कर रहा हूं।

मैं एक बहु किरायेदार आवेदन लिख रहा हूं, जो डीबी बैकएंड का उपयोग करता है। मैं डेटाबेस तक पहुंचने के लिए एडीओ और कच्चे एसक्यूएल का उपयोग कर रहा हूं, मुझे उपयोगकर्ता के लिए बहुत सारी जानकारी स्टोर करने की भी आवश्यकता है, ताकि मूल रूप से, मैं उपयोगकर्ता के लिए एक प्रीलोडेड संदर्भ, (या कैश से लाता हूं) बना सकता हूं।

यहां कुछ छद्म कोड है, जो दिखाता है, जो मैं प्राप्त करने की कोशिश कर रहा हूं, एएसपी.नेट में।

namespace myApp.Controllers 
{ 
    public class FoobarController : ApiController 
    { 
     public Response doLogin(request) 
     { 
      var ctx = myApplicationContext.getInstance(); 
      var user = ctx.getUser();  

      if (!user.isLoggedOn()) 
      { 
       username = request.getParameter('username'); 
       password= request.getParameter('password'); 

       dbManager = ctx.getDbInstance(); 

       resp = dbManager.internalLogin(username, password); 

       // Load permissions etc for current user, from db 
       // Store user info in cache .. 
      } 
     }  

     public Response ActionOne(request) 
     { 
      ctx = myApplicationContext.getInstance(); 
      user = ctx.getUser(); 

      if (user.hasPermission('xxx')) 
      { 

      } 
     } 
    } 
} 

मेरा प्रश्न,, है कि कैसे मैं कार्यक्षमता के इस प्रकार लागू करते हैं:

अर्थात्:

  • एक आवेदन संदर्भ बनाएँ, जिसमें मैं एक तरह संदर्भ संवेदनशील जानकारी के साथ पॉप्युलेट कर सकते हैं डेटाबेस कनेक्शन, मेलर कॉन्फ़िगरेशन, ऑब्जेक्ट कारखानों, विविध राज्य सूचना आदि

  • उपयोगकर्ता ऑब्जेक्ट तक पहुंचें (जिसे मैं विज्ञापन दे सकता हूं डी उपयोगकर्ता प्रमाण पत्र, अनुमति आदि)

  • सत्र चर आदि तक पहुंच है?

नोट्स

  1. मैं लिनक्स पर वेब अनुप्रयोग की तैनाती की जाएगी, और मैं वेब सर्वर के रूप में अपाचे का उपयोग किया जाएगा।
  2. इस परियोजना का उद्देश्य के लिए, मैं Azure, विंडोज प्रमाणीकरणों आदि की तरह किसी भी Microsoft प्रौद्योगिकी (और ASP.Net से सी # अन्य)
  3. मैं एक कच्चे डेटाबेस कनेक्शन का उपयोग करने, इकाई का उपयोग नहीं चाहते का उपयोग नहीं करना चाहते हैं प्रबंधक (विरासत आवेदन बंदरगाह)
+2

आप Owin और एएसपी पहचान में देखा है? पहचान इन दिनों एएसपी अनुप्रयोगों के टेम्पलेट के साथ आता है, जैसा कि ओविन है, और यह आपके सभी ऑथ जरूरतों को संभालेगा। ओविन एक और बुनियादी ढांचा है जिस पर सब कुछ (सैद्धांतिक रूप से) बैठता है - यदि आप सीखने के लिए अपना खुद का लेख ढांचा बनाना चाहते हैं, तो मैं ओविन के साथ शुरू करूंगा। एएसपीनेट वेबसाइट पर कुछ ट्यूटोरियल हैं। –

उत्तर

5

मैं थोड़ा संघर्ष कर रहा हूँ, घटनाओं है कि एक अनुरोध वेब सर्वर के लिए एक ब्राउज़र/सामने अंत ग्राहक से भेज दिया जाता है के बाद, हो के अनुक्रम को समझने के लिए।

इस मैं this PDF Poster कहेंगे लिए ASP.NET वेबएपीआई में अनुरोध प्रसंस्करण का सबसे अच्छा सचित्र प्रतिनिधित्व करता है।

मेरा प्रश्न,, है कि कैसे मैं कार्यक्षमता के इस प्रकार लागू करते हैं:

अर्थात्:

  • एक आवेदन संदर्भ बनाएँ, जिसमें मैं एक तरह संदर्भ संवेदनशील जानकारी के साथ पॉप्युलेट कर सकते हैं डेटाबेस कनेक्शन, मेलर कॉन्फ़िगरेशन, ऑब्जेक्ट कारखानों, विविध राज्य जानकारी इत्यादि।

  • पहुँच एक उपयोगकर्ता ऑब्जेक्ट (मैं उपयोगकर्ता क्रेडेंशियल जोड़कर देख सकते हैं, अनुमति आदि के लिए)

  • सत्र चर आदि के लिए उपयोग किया है?

इस मैं कहूंगा लिए, WebAPIs राज्यविहीन होने के लिए तैयार कर रहे हैं और इसलिए, सबसे अच्छा तरीका (डेटाबेस में कहते हैं) एक लगातार सत्र बना सकते हैं और सत्र के लिए एक पहचानकर्ता का उपयोग है (सत्र कुंजी या टोकन की तरह) प्रत्येक अनुरोध के लिए किसी उपयोगकर्ता की पहचान करने और उसके सत्र चर/संदर्भ सूचनाएं प्राप्त करने के लिए।

अब, आपके उदाहरण में आपके द्वारा पूछे जाने वाले कार्यक्षमता को लागू करने के लिए, जिसे प्रमाणीकरण फ़िल्टर और प्राधिकरण फ़िल्टर (More details on implementing them here) के संयोजन से प्राप्त किया जाएगा।

वेबएपीआई में प्रत्येक अनुरोध को पहले हैंडलर द्वारा संसाधित किया जाता है और फिर अनुरोधित कार्रवाई के निष्पादन से पहले, फ़िल्टर लागू होते हैं। आपके उदाहरण के लिए प्रमाणीकरण फ़िल्टर DoLogin फ़ंक्शन और user.hasPermission तर्क प्राधिकरण फ़िल्टर में रहेंगे और केवल क्रिया तर्क नियंत्रक में क्रिया (फ़ंक्शन) में रहेंगे।

enter image description here

+0

आपके उत्तर के लिए धन्यवाद। हालांकि, मैं पहले से ही उस पीडीएफ योजनाबद्ध के बारे में पता था। दुर्भाग्यवश, यह बहुत मदद नहीं करता है, क्योंकि यह मानता है कि पाठक पहले से ही एएसपी.Net कक्षाओं/नामस्थान आदि से परिचित है। जो मैं खोज रहा था वह एक आरेख था जो कार्यप्रवाहों में वर्कफ़्लो में अवधारणाओं को मैप किया गया था - जैसा कि यह खड़ा है, इंजीनियर आईएमएचओ पर दिखता है। यह सब विफल होने पर, यह देखने के लिए कम से कम उपयोगी होगा कि मैं अपना खुद का प्रमाणीकरण और प्राधिकरण फ़िल्टर कैसे लिख सकता हूं। –

+0

सचमुच बोल रहा है कि आरेख ने मुझे पहली नज़र में भी देखा था। लेकिन एक बार जब मुझे वेबएपीआई की बुनियादी समझ हो गई, तो यह मतदान किसी भी स्पष्टीकरण के लिए एक स्टॉप प्वाइंट होना चाहिए जो मुझे अपने लिए चाहिए। यह लिंक प्राधिकरण और प्रमाणीकरण को लागू करने के बारे में अधिक जानकारी देता है। मैं इसे अपने उत्तर में भी अपडेट करूंगा। - http://www.asp.net/web-api/overview/security/authentication-and- प्राधिकरण-in-aspnet-web-api – Guanxi

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