2015-10-20 15 views
5

Brock Allen's blog पर पर अतिरिक्त सत्यापन प्रदर्शन करने के लिए OnValidateIdentity का उपयोग करना, वह कहता है किकुकी डेटा

CookieAuthenticationOptions वर्ग एक प्रदाता संपत्ति है ... और यह गुण जो प्रतिनिधियों आप सदस्यता ले सकते हैं। यह आपको कुकी को सत्यापित करने की अनुमति देता है क्योंकि यह (OnValidateIdentity) में आता है। इस कॉलबैक में आप पहचान को अस्वीकार या प्रतिस्थापित कर सकते हैं।

मैं ओविन और सी # के लिए नया हूं, इसलिए OnValidateIdentity के कई उदाहरणों को अनुकूलित करने के लिए संघर्ष कर रहा हूं जो मुझे अपनी आवश्यकताओं के अनुरूप ऑनलाइन मिला है। बाद कुकी प्रत्येक 'निजी' वेब पेज पर वैध रूप में स्वीकार किया गया है, मैं निम्न बातों की जांच करना चाहते हैं:

  1. कुकी शामिल कम से कम एक दावा
  2. ग्राहक आईडी दावा मूल्य से अधिक है शून्य

मैं इन दो चेकों को एक सामान्य विधि में प्राप्त कर सकता हूं, लेकिन मैं यह नहीं समझ सकता कि लॉगिन को OnValidateIdentity में कैसे हुक करना है। यहां मेरे पास अब तक है:

मैंने कुछ कोड लिखा है, लेकिन यह पता नहीं लगा सकता कि उपयोग की गई विधि से क्या लौटाया जाना चाहिए।

public void Configuration(IAppBuilder app) 
{ 
    dynamic cookieExpirationPeriod = TimeSpan.FromMinutes(60); 

    CookieAuthenticationProvider prov = new CookieAuthenticationProvider(); 
    prov.OnValidateIdentity = ctx => 
    { 
     MyClaimsIdentityObject si = MyApp.Identity.Current(); 
     if (si == null || si.UserId == 0 || si.CustomerId == 0) { 
      ctx.RejectIdentity(); 
      // what needs to happen here for a return value? 
     } 
    }; 


    CookieAuthenticationOptions coa = new CookieAuthenticationOptions { 
     AuthenticationMode = AuthenticationMode.Active, 
     CookieName = "MyApp", 
     ExpireTimeSpan = cookieExpirationPeriod, 
     SlidingExpiration = true, 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/login.aspx"), 
     CookieHttpOnly = true, 
     Provider = prov 
    }; 

    if (HttpContext.Current.Request.IsLocal) { 
     coa.CookieSecure = CookieSecureOption.Never; 
    } else { 
     coa.CookieSecure = CookieSecureOption.Always; 
    } 

    app.UseCookieAuthentication(coa); 

} 

उत्तर

3

मुझे विश्वास है कि सिर्फ है:

return Task.FromResult<int>(0); 
+0

यहाँ एक पूर्ण उदाहरण है कि मैं क्या जरूरत के लिए एक ऐसी ही बात को प्राप्त होता है: http://stackoverflow.com/questions/25780551/extending-cookieauthenticationprovider- onvalidateidentity – EvilDr

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