bind نشدن مدل از ویو به کنترلر MVC
سلام خسته نباشید من یک مدل user دارک ه بعضی از اطلاعاتش رو رمزنگاری میکنم
مثلا:
[NotMapped] public string EnDecryptedEmail { get { return EnDeCryptMethods.AesDecrypt(this.Email, this.Key, this.Iv); } set { this.Email = EnDeCryptMethods.AesEncrypt(value, this.Key, this.Iv); } }
ویو:
<div class="form-group"> @Html.LabelFor(model => model.EnDecryptedEmail, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.EnDecryptedEmail, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.EnDecryptedEmail, "", new { @class = "text-danger" }) </div> </div>
پراپرتی بالا کارش اینکه موقع set کردن مقدار را رمزنگاری میکند و موقع get کردن یا همون نمایش از رمز در میاره ([NotMapped] هست)
وقتی در ویو از این پراپرتی استفاده میکنم مشکلی ندارد و نمایش میدهد اما وقتی submit میکنم فرم را تمام این [NotMapped] ها که کارشان رمزنگاری هست از سمت ویو null به کنترلر فرستاده میشوند.
کنترلر
public ActionResult Index([Bind(Include = "EnDecryptedEmail,Email,SecondMobile,FullName,Height,Weight")] User user)
EnDecryptedEmail = null
کسی دلیلش را میداند ؟
و یک سوال دیگر کلا اینگونه رمزنگاری خوبه ؟ کلید و بردار ( Key و IV ) هر یوزر با بقیه مشخصات در دیتابیس ذخیره میشود و هر user هم کلید و بردار مخصوص به خودش را دارد.
4 پاسخ
var ageinput = document.forms['login-form']['age'];
ممنون از همه
مجبور شدم یک ویو مدل بسازم تا داده ها را از ویو به کنترلر پاس بدهم
در متد get یوزر را تبدیل به ویو مدل کردم (رمزگشایی شده) و فرستادم و در متد Post ویو مدل را تبدیل به یوزر کردم (رمزگذاری شده) درست شد
سلام، وقت بخیر، قسمتی که عملیات Submit انجام میشه کجا هست؟ من متدی برای POST ندیدم تو کدتون.
سلام دوست من
ديدم قسمتي از سوال شما اين بود كه "كلا اين رمز نگاري خوبه ؟" ...
جواب سوال شما اينه كه نه !!
پيشنهاد اكثر اساتيد استفاده از رمز نگاري هاي يكطرفه (غير قابل بازگشت) و غيراستاندارد هست . منظورم از غيراستاندارد اينه كه يه متد استاندارد رو بگيريد و براي خودتون اونو سفارشي كنيد .
و نكته ديگه اي كه بايد خدمتتون بگم اينه كه فيلتر [NotMapped] براي اينه كه زماني كه شما از firstCode و migration براي كد نويسي استفاده ميكني اين پراپرتي يا كلاس رو تو migration در نظر نگيره .
موفق باشي .