سلام.وقت بخیر
ممنون که وقت میذارین جواب میدین
یه مشکل داشتم
پروژه ام رو که روی سرور گذاشتم موقع لاگین خطا زیر رو میده سرچ کردم به وب کانفیگ هم اضافه کردم تگ اما هنوز همون پیغام رو میده
The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the <machineKey> configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster
کد اکشن و ویو را قرار دهید
سلام آدرس سایت http://www.efit-co.com/ با نام کاربری و رمز عبور username=admin , pass=123
لاگین نمیشه در صورتی که رو سیستم لوکال خودم مشکلی نداره
کد مربوط به اکشن:
public ActionResult Login() { return View(); } [HttpPost] [ValidateAntiForgeryToken] [AllowAnonymous] public ActionResult Login(RegisterUserViewModel loginInfoFromView) { if (this.IsCaptchaValid("Captcha is not valid")) { if (ModelState.IsValid) { var UserToLogin = db.Users.FirstOrDefault(p => p.UserName == loginInfoFromView.Username); if (UserToLogin != null && UserToLogin.IsActive) { byte[] hashBytes = Convert.FromBase64String(UserToLogin.Password); byte[] salt = Convert.FromBase64String(UserToLogin.SALT); Array.Copy(hashBytes, 0, salt, 0, 16); var pbkfd2 = new Rfc2898DeriveBytes(loginInfoFromView.Password, salt, 10000); byte[] hash = pbkfd2.GetBytes(20); for (int i = 0; i < 20; i++) { if (hashBytes[i + 16] != hash[i]) { TempData["LoginErrorMessage"] = true; return RedirectToAction("Login", "Account"); } } var menus = (from UsersRole in db.UsersRoles join MvcMenuRole in db.MvcMenuRoles on UsersRole.RoleID equals MvcMenuRole.RoleID join MvcMenu in db.MvcMenus on MvcMenuRole.MvcMenuID equals MvcMenu.MvcMenuID join role in db.Roles on MvcMenuRole.RoleID equals role.RoleID join menu in db.MainMenus on MvcMenu.MainMenuID equals menu.MainMenuID where (UsersRole.UserID==UserToLogin.UserID && (UsersRole.EndDate >DateTime.Now || UsersRole.EndDate==null)) select new { MvcMenu.MvcMenuID, MvcMenu.SubMenu, MvcMenu.Controler, MvcMenu.Action, MvcMenu.MainMenuID, MvcMenu.MainMenu.TitleFa }).Distinct(); ; var MenuList = new List <MenuMetaData>(); foreach (var item in menus) { MenuList.Add(new MenuMetaData() { MvcMenuID = item.MvcMenuID, SubMenu = item.SubMenu, Controler = item.Controler, Action = item.Action, MainMenuID = item.MainMenuID, TitleFa = item.TitleFa }); } FormsAuthentication.SetAuthCookie(UserToLogin.UserName, false); Session["MenuMaster"] = MenuList; Session["personID"] = UserToLogin.PersonID; Session["UserID"] = UserToLogin.UserID; return RedirectToAction("Home", "Home"); } else { ModelState.AddModelError("Username", "حساب کاربری فوق فعال نشده است"); TempData["LoginErrorMessage"] = true; return RedirectToAction("Login", "Account"); } } return RedirectToAction("Login", "Account"); } else { ModelState.AddModelError("CaptchaInputText", "لطفا تصویر امنیتی را درست وارد نمایید."); } return RedirectToAction("Login", "Account"); }
کد ویو
@using Football.Models @using CaptchaMvc.HtmlHelpers @{ ViewBag.Title = "Log in"; var captcha = Html.Captcha("تصویر جدید", "", 4, "عبارت در تصویر را وارد کنید", false); Layout = "_LoginLayout.cshtml"; } @section styles { <link href="~/Content/css/mediaQueries.css" rel="stylesheet" /> } <div style="height:620px"> <div class="row login-page"> <div class="col-lg-4 col-md-4 col-sm-5 col-xs-12 login-view login-form-view"> <div class="login-main-form"> <div class="login-LogoDiv"> <a href="/"> </a> </div> <h3 class="loginTitle"><i class="fa fa-trophy" style="font-size:36px"></i>ورود به سایت<i class="fa fa-soccer-ball-o" style="font-size:36px"></i></h3> @if (TempData["LoginErrorMessage"] != null) { <div class="Alert dangerAlert" id="dangerMessage">نام کاربری و یا رمزعبور اشتباه است.</div> } <form class="form-horizontal" method="post" action="/Account/Login" enctype="multipart/form-data" > @Html.AntiForgeryToken() @Html.ValidationSummary() <div class="input-group custom-login-input animated fadeIn"> <input type="text" class="form-control loginInputs" name="username" placeholder="شناسه کاربری خود را وارد کنید..." /> <span class="input-group-addon loginInputsAddon"> <label for="email"> <i class="fa fa-user"></i> </label> </span> </div> <div class="input-group custom-login-input animated fadeIn"> <input type="password" class="form-control loginInputs" name="password" placeholder="رمز خود را وارد کنید..." /> <span class="input-group-addon loginInputsAddon" style="padding: 6px 16px"> <label for="password"> <i class="fa fa-unlock-alt"></i> </label> </span> </div> <div class="row"> <div class="col-md-4 margin-top-20"> تصویر امنیتی </div> <div class="col-md-12" style="margin:0px"> @captcha @Html.ValidationMessage(captcha.BuildInfo.InputElementId, new { @class = "text-danger" }) </div> </div> @*</div>*@ <div class="row login-form-details dis-flex al-center"> <div class="col-md-8 col-sm-12"> <button type="submit" class="col-xs-12 fadeInUp animated loginBtn">ورود</button> </div> </div> </form> <div class="col-md-8 col-xs-12"> <a href="#" class="forgotPass">رمزعبورتان را فراموش کرده اید؟</a> </div> </div> </div> </div> <div class="col-lg-8 col-md-8 col-sm-7 login-page-background"> <img src="../Content/Images/b2.jpg" class="backgroundImage" /> </div> </div> @*</div>*@ @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
ممنون میشم کمک کنید به نظر مشکل از captchaهست چون رفرش میشه و اجازه لاگین نمیده .این پروژه رو سیستم خودم بدون مشکل داره کار میکنه .پابلیش کردم گذاشتم رو سرو اینطور شده
برای پروژه اتون باید یه Machin Key قرار بدید
سرچ کنید Generate Machin Key سایت های آنلاین هستند که ایجاد میکنند و بعد در وب کانفیگ سایت روی سرور قرار دهید مشکل برطرف میشه
مشکل ار ForgeryToken است که به سایت شما مربوط میشه
احتمال زیاد از همون Machin Key هست
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)