ابتدا تشکر میکنم بابت ارائه این پروژه.
برای یادگیری من دارم پروژه ای شبیه به پروژه شما میسازم. یعنی به عبارتی مراحل شمارو یکی ، یکی طی میکنم. حالا به جایی رسیدم که هرچقدر هم تلاش کردم متاسفانه پاسخی براش پیدا نکردم.
مشکل من اینه. زمانی که کاربر دکمه ورود رو میزنه و وارد سیستم میشه ، زمانی که صفحه رو رفرش کنه یا از صفحه ای به صفحهی دیگه بره اهراز هویتیش تموم میشه. با اینکه "مرا به خاطر داشته باش" رو هم تیک میزنم ولی باز این مشکل پیش میاد. جالب اینجاست کدهای خودتون به درستی در پروژه خودتون کار میکنه ولی وقتی میارمشون تو پروژهی خودم این مشکل پیش میاد. نمیدونم کجارو اشتباه کردم ولی میدونم یک چیزی کمه.
توجه کنید زمانی که کاربر ورود میکنه مقدار @User.Identity.IsAuthenticated برابر با true هستش. پس قطعا کاربر ورود میکنه ولی زمانی که صفحه تغییر میکنه این مقدار برابر false میشه.
کدهای کلاس Startup دقیقا همون کدهای شما و من تغییری بهشون ندادم فقط اسم کوکی رو عوض کردم یعنی اینطوری :
این هم کدهای صفحه ورود :
ممنون میشم اگر میدونید کجارو اشتباه کردم بهم بگید.
با سپاس
برای یادگیری من دارم پروژه ای شبیه به پروژه شما میسازم. یعنی به عبارتی مراحل شمارو یکی ، یکی طی میکنم. حالا به جایی رسیدم که هرچقدر هم تلاش کردم متاسفانه پاسخی براش پیدا نکردم.
مشکل من اینه. زمانی که کاربر دکمه ورود رو میزنه و وارد سیستم میشه ، زمانی که صفحه رو رفرش کنه یا از صفحه ای به صفحهی دیگه بره اهراز هویتیش تموم میشه. با اینکه "مرا به خاطر داشته باش" رو هم تیک میزنم ولی باز این مشکل پیش میاد. جالب اینجاست کدهای خودتون به درستی در پروژه خودتون کار میکنه ولی وقتی میارمشون تو پروژهی خودم این مشکل پیش میاد. نمیدونم کجارو اشتباه کردم ولی میدونم یک چیزی کمه.
توجه کنید زمانی که کاربر ورود میکنه مقدار @User.Identity.IsAuthenticated برابر با true هستش. پس قطعا کاربر ورود میکنه ولی زمانی که صفحه تغییر میکنه این مقدار برابر false میشه.
کدهای کلاس Startup دقیقا همون کدهای شما و من تغییری بهشون ندادم فقط اسم کوکی رو عوض کردم یعنی اینطوری :
public class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); app.MapSignalR(); } private static void ConfigureAuth(IAppBuilder appBuilder) { const int twoWeeks = 14; ProjectObjectFactory.Container.Configure(config => config.For<IDataProtectionProvider>() .HybridHttpOrThreadLocalScoped() .Use(() => appBuilder.GetDataProtectionProvider())); appBuilder.CreatePerOwinContext( () => ProjectObjectFactory.Container.GetInstance<ApplicationUserManager>()); appBuilder.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), ExpireTimeSpan = TimeSpan.FromDays(twoWeeks), SlidingExpiration = true, CookieName = "MyFirstCms", Provider = new CookieAuthenticationProvider { OnValidateIdentity = ProjectObjectFactory.Container.GetInstance<IApplicationUserManager>().OnValidateIdentity() } }); ProjectObjectFactory.Container.GetInstance<IApplicationRoleManager>() .SeedDatabase(); ProjectObjectFactory.Container.GetInstance<IApplicationUserManager>() .SeedDatabase(); appBuilder.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process. //appBuilder.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); // Enables the application to remember the second login verification factor such as phone or email. // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from. // This is similar to the RememberMe option when you log in. // appBuilder.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); appBuilder.UseFacebookAuthentication( appId: "fdsfdsfs", appSecret: "fdfsfs"); appBuilder.UseGoogleAuthentication( clientId: "fdsfsdfs", clientSecret: "fdsfsf"); } }
این هم کدهای صفحه ورود :
[HttpPost] [AllowAnonymous] //[CheckReferrer] [ValidateAntiForgeryToken] public virtual async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } if (!_userManager.CheckUserNameExist(model.UserName,null)) { this.AddErrors("UserName", "نام کاربری یا کلمه عبور وارد شده نادرست است"); return View(model); } if (_userManager.CheckIsUserBannedOrDelete(model.UserName)) { this.AddErrors("UserName", "حساب کاربری شما مسدود شده است"); return View(model); } if (!_userManager.IsEmailConfirmedByUserNameAsync(model.UserName)) { this.NotyWarning("برای ورود به سایت لازم است حساب خود را فعال کنید"); return RedirectToAction(MVC.Account.ActionNames.ReceiveActivatorEmail, MVC.Account.Name); } var result = await _signInManager.PasswordSignInAsync (model.UserName.ToLower(), model.Password, model.RememberMe, shouldLockout: true); switch (result) { case SignInStatus.Success: this.NotySuccess("شما با موفقیت وارد سیستم شدید"); return RedirectToLocal(returnUrl); case SignInStatus.LockedOut: this.NotyError( $"دقیقه دوباره امتحان کنید {_userManager.DefaultAccountLockoutTimeSpan} حساب شما قفل شد ! لطفا بعد از "); return View(model); case SignInStatus.Failure: this.NotyError(ModelState.GetListOfErrors()); return View(model); default: this.NotyError( "در این لحظه امکان ورود به سابت وجود ندارد . مراتب را با مسئولان سایت در میان بگذارید"); return View(model); } }
ممنون میشم اگر میدونید کجارو اشتباه کردم بهم بگید.
با سپاس