مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hamed.producer

عضویت از 1397/01/13

مشکل LockoutEnable شدن و عدم لاگین کاربر پس از ویرایش

  • پنجشنبه 24 خرداد 1397
  • 16:42
تشکر میکنم

عرض سلام و احترام

سیستم احراز هویت سایت با Identity2 میباشد

این امکان رو برای کاربر گذاشتم که پس از لاگین کردن بتونه یک سری فیل ها مثل نام و نام خانوادگی رو ویرایش کنه

مشکلی که وجود داره کاربر پس از ویرایش اطلاعاتش (طبق مراجعه به جدول User در sqlserver) فیلد پسوردش خالی میشه و مقدار LockutEnable برابر False میشه و کاربر دیگه نمیتونه لاگین کنه

روش کلی ویرایش کاربرم هم به این صورت هست که با ریپوزیتوری کوئری میزنم روی جدول یوزر و فراخوانی و ویرایشش میکنم

مشکل از چیه که چنین اتفاقی میفته؟

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • پنجشنبه 24 خرداد 1397
  • 18:15

کد ویرایش خودتون رو قرار بدید.

کاربر سایت

hamed.producer

عضویت از 1397/01/13

  • پنجشنبه 24 خرداد 1397
  • 19:41

ممنون از وقتی که میگذارین

خدمت شما:

[Authorize]
        [ValidateAntiForgeryToken]
        [HttpPost, ActionName("EditProfile")]
        public ActionResult EditUserConfirm([Bind(Include = "id,UserName,FullName,RegisterDate,PhoneNumber,Address")] ApplicationUser applicationUser)
        {
           
                if (ModelState.IsValid)
                {
                    
                    applicationUserRepository.EditUser(applicationUser);
                    applicationUserRepository.Save();
                    return Redirect("/Manage/Index");
                }
                return View(applicationUser);
        }

همچنین view مربوطه:

@model DataLayer.ApplicationUser
@{
    ViewBag.Title = "ویرایش اطلاعات کاربری";
    Layout = "~/Views/Shared/_LayoutProfile.cshtml";
}





@using (Html.BeginForm("EditProfile", "Account", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.Id)
    @Html.HiddenFor(model => model.UserName)
    @Html.HiddenFor(model => model.RegisterDate)



    <section>

        <div class="form-group">
            @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
            </div>
        </div>


        <div class="form-group">
            @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.PhoneNumber, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
            </div>
        </div>


        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="ذخیره" class="btn btn-submit" />
            </div>
        </div>


    </section>
}

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • یکشنبه 27 خرداد 1397
  • 09:16

 شما باید تنها فیلد های موردنیاز خود را تغییر دهید نه همه آنها را زمانی که یک نمونه از ApplicationUser را به ef می دهید (همین مقادیری که در کد شما قرار دارد) تعدادی از فیلد ها مقدار دهی نشدند و ef فکر میکند که شما آنها را ویرایش کردید سپس پس از SaveChange مقداریر ویرایش می شوند. شما باید ابتدا entity قبلی خود را واکشی کنید و این تغییرات را روی آن اعمال کنید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)