मैं कटाना परियोजना में अन्य उदाहरणों के आधार पर ओपनआईडी कनेक्ट प्राधिकरण कोड प्रवाह के लिए अपना स्वयं का ओविन मिडलवेयर लिख रहा हूं।OwinContext.Request.Path और PathBase कैसे आते हैं?
इस के हिस्से के रूप में मुझे कुछ यूआरआई बनाना है, उदाहरण के लिए एक रीडायरेक्ट यूआरआई और रिटर्न यूआरएल।
कटाना में अन्य उदाहरण CookieAuthenticationHandler में उदाहरण के लिए वर्तमान अनुरोध से भागों श्रृंखलाबद्ध कर ऐसा करते हैं,
loginUri =
Request.Scheme +
Uri.SchemeDelimiter +
Request.Host +
Request.PathBase +
Options.LoginPath +
new QueryString(Options.ReturnUrlParameter, currentUri);
मेरा प्रश्न नियम क्या नियंत्रित करने वाले क्या दो पथ गुण में समाप्त होता है है:
OwinContext.Request.Path
OwinContext.Request.PathBase
मैंने इन गुणों का निरीक्षण करने की कोशिश की है क्योंकि अनुरोध नीचे दिए गए पाइपलाइन में विभिन्न हैंडलरों के माध्यम से अनुरोध पास होता है:
"https://localhost/Client/login" // Where Client is a virtual directory in IIS
परिणाम:
- /लॉगिन, PathBase = "/ क्लाइंट/लॉग इन के लिए" मैप किया हैंडलर में।
- लेकिन जब अनुरोध मेरे QuillCodeFlowHandler में ApplyResponseChallowAsync विधि को उसी अनुरोध के लिए वापस रास्ते पर, पथबेज = "/ क्लाइंट" और पथ = "/ लॉगिन" पर वापस जाता है।
तो इन मानों को कैसे पॉप्युलेट किया गया है, इसके लिए "नियम" जानने के बिना, बाद में बदल दिया गया, यूआरआई का उपयोग करके उन्हें बनाना मुश्किल है। अगर कोई समझा सकता है, तो उसकी सराहना की जाएगी।
मेरी config का एक उद्धरण है:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
LoginPath = new PathString("/Login")
});
app.UseQuillCodeFlowAuthentication(new QuillCodeFlowOptions());
app.Map("/login", map =>
{
map.Run(async ctx =>
{
if (ctx.Authentication.User == null ||
!ctx.Authentication.User.Identity.IsAuthenticated)
{
var authenticationProperties = new AuthenticationProperties();
[...]
ctx.Authentication.Challenge(authenticationProperties,
QuillCodeFlowDefaults.AuthenticationType);
OWIN specification कुछ स्पष्टीकरण देता है और Microsoft.Owin.Host.HttpListener.GetPathAndQuery विधि जहां पथ चर शुरू में स्थापित कर रहे हैं लगता है।