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

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

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

پنج شنبه, 24 خرداد 1397 16:42

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

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

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

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

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

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

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

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

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

پنج شنبه, 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>
}

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

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

کسانی که از این پست تشکر کرده اند : hamed.producer,

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید