ASP.NET عضوية غير مصطفة ولكن لا يزال يسمح بتسجيل الدخول

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

  •  06-07-2019
  •  | 
  •  

سؤال

لقد قمت بتغيير مزود عضوية الحساب الافتراضي لتعيين ISAPPED إلى FALSE.

    public MembershipCreateStatus CreateUser(string userName, string password, string email)
    {
        MembershipCreateStatus status;
        _provider.CreateUser(userName, password, email, null, null, false, null, out status);
        return status;
    }

لكنني أعود بعد ذلك إلى صفحة تسجيل الدخول وتتيح لي تسجيل الدخول. ألا ينبغي أن تفشل تسجيل الدخول والقول أنني لم تتم الموافقة ؟؟

تعديل:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Register(string userName, string email, string password, string confirmPassword, string address, string address2, string city, string state, string homePhone, string cellPhone, string company)
    {

        ViewData["PasswordLength"] = MembershipService.MinPasswordLength;

        if (ValidateRegistration(userName, email, password, confirmPassword))
        {

            // Attempt to register the user
            MembershipCreateStatus createStatus = MembershipService.CreateUser(userName, password, email);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuth.SignIn(userName, false /* createPersistentCookie */);

                TempData["form"] = Request.Form;
                TempData["isActive"] = false;
                return RedirectToAction("Create", "Users");
            }
            else
            {
                ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus));
            }
        }

        // If we got this far, something failed, redisplay form
        return View();
    }
هل كانت مفيدة؟

المحلول

(يبدو أن النسخة الأخرى من هذا السؤال سيتم إغلاقها ، لذلك قمت بنسخ إجابتي هنا)

httprequest.isauthenticated إرجاع صحيح إذا كان httpcontext.user.identity ليس فارغا وأن خاصية isauthented تُرجع صحيحًا.

تم تعيين الهوية الحالية في FormaUtenticationModule, ، ولكن لا علاقة له مع عضويتك. في الواقع ، فإنه لا يشير إليها. كل ما يفعله هو التحقق لمعرفة ما إذا كان ملف تعريف ارتباط المصادقة لا يزال محددًا ولا يزال صالحًا (كما هو ، لم ينته صلاحية).

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

تحديث

لا توجد قيم العضوية createstatus هذا يحدد أن المستخدم قد تم إنشاؤه ولكن لم يعتمد عليه ، وبالتالي فإن الكود الخاص بك يتصل FormsAuth.SignIn دون التحقق فعليًا ما إذا كان قد تمت الموافقة على المستخدم.

FormsAuth.SignIn فقط يضع ملف تعريف الارتباط ، هذا كل شيء. لا يتحقق من صحة المستخدم أو يكون له أي علاقة مع عضويتك. إذا كانت الموافقة غير متزامنة (أي في انتظار الإنسان) ، فلا تسجل المستخدم تلقائيًا عن طريق استدعاء Formsauth.signin.

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