ويمكنني أن أضيف شيئا إلى الدورة المستخدم في العرف MembershipProvider؟

StackOverflow https://stackoverflow.com/questions/1004862

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا تنفيذ MembershipProvider مخصصة من أجل تمرير تفاصيل تسجيل الدخول إلى كائن أعمال مخصصة التي نستخدمها في عدة أماكن أخرى في شركتنا. ولكن بعد أن نكون قد مصادقة كنت تريد حفظ هذا الكائن الأعمال تهيئة في الدورة لاستخدامها في وقت لاحق في الصفحات الأخرى. اسمحوا لي أن أقدم مثالا على ذلك.

public override bool ValidateUser(string username,string password)
{
    try
    {
        // I want to keep this "object" in the Session to be used later on
        CustomBusinessObject object = new CustomBusinessObject(username, password);

        return true;
    }
    catch (CustomBusinessAuthenticationException)
    {
        return false;
    }
}

هل هناك طريقة بالنسبة لي للقيام بذلك؟ لم أكن أرى فورا وسيلة للوصول إلى هدف الدورة من خلال تنفيذ هذا MembershipProvider المخصصة.

هل كانت مفيدة؟

المحلول

ويمكنك الوصول إلى الدورة عن طريق الاتصال System.Web.HttpContext.Current. فقط قم بإنشاء خاصية مخصصة على موفر العضوية المخصص الذي يتحقق لمعرفة ما إذا HttpContext.Current لاغيا وإذا كان الأمر كذلك، يعود لاغية، وإلا الوصول إلى قيمة الجلسة وفقا لذلك.

public object CustomObject
{
    get
    {
        if(System.Web.HttpContext.Current == null)
        {
            return null;
        }
        return System.Web.HttpContext.Current.Session["CustomObject"];
    }
    set
    {
        if(System.Web.HttpContext.Current != null)
        {
            System.Web.HttpContext.Current.Session["CustomObject"] = value;
        }
    }
}

نصائح أخرى

ويجب أن تكون قادرا على الوصول إلى System.Web.HttpContext.Current.Session.

ونضع في اعتبارنا أن System.Web.HttpContext سيتم null إذا تم استخدام مزود من أي وقت مضى من خارج خط أنابيب ASP.Net، وذلك من خلال استخدامه داخل مزود الخاص بك سوف يتم اقتران موفر بإحكام إلى ASP.Net.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top