• 1400/12/14

مشکل در احراز هویت در دات نت 6 :

با سلام استاد 

پروژه جدیدی را با دات نت 6 شروع کردم ولی بعد از ورود موفقیت آمیز در صورتی که صفت Authorize  را می دهم به اکشنی دوباره  من را به صفحه لاگین ارجاع می دهد آیا در دات نت 6  تنظیم خاصی دارد؟

  • 1400/12/14
  • ساعت 10:44

سلام دوست عزیز 🖐️

دستور 

app.UseAuthentication();
app.UseAuthorization();

رو در فایل Program.cs قرار دادید ؟

با تشکر 🙏


  • 1400/12/14
  • ساعت 11:04

بله این خط کد رو هم به بهش اضافه کردم 

builder.Services.AddAuthentication(options =>
{

   options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
 options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;

}).AddCookie(options =>
{
   options.LoginPath = "/Login";
   options.LogoutPath = "/Logout";
   options.ExpireTimeSpan = TimeSpan.FromHours(24);
});

  • 1400/12/14
  • ساعت 11:11

دوست عزیز اینکه درسته پایین تر اونجا که دستوراتش با app شروع میشه دستورات بالا رو اضافه کردید ؟

شما بجز Add کردن Authentication اون رو مثل تصویر پایین Use هم کردین ؟

با تشکر 🙏


  • 1400/12/14
  • ساعت 11:16
این را قرار دادم 

app.UseStaticFiles();
app.UseHttpsRedirection();
app.UseMvcWithDefaultRoute();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
   name: "default",
   pattern: "{controller=Home}/{action=Index}/{id?}");

 

app.Run();

  • 1400/12/14
  • ساعت 11:18

دوست عزیز اتصال پروژتون http هست یا https ؟

با تشکر 🙏


  • 1400/12/14
  • ساعت 11:21

سلام 

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


  • 1400/12/14
  • ساعت 11:40

با مرورگر های دیگه هم تست کردم فعلا روی لوکال هاست هست من قبلا با دات نت 3.1 بدون مشکل احراز می شد تو دات نت 6 نمی دونم چرا بعد لاگین موفق دوباره پاس میده روی لاگین


  • 1400/12/14
  • ساعت 11:42

دوست عزیز توی حالت ناشناس (Incognito) مرورگر هم تست کنید ببینید آیا اونجا هم به همین صورته ؟

با تشکر 🙏


  • 1400/12/14
  • ساعت 11:48
فقط ترتیبشون مشکل نداره ؟

builder.Services.AddControllersWithViews();
builder.Services.AddMvc(options => options.EnableEndpointRouting = false);
#region Authentication

builder.Services.AddAuthentication(options =>
{

   options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
 options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;

}).AddCookie(options =>
{
   options.LoginPath = "/Login";
   options.LogoutPath = "/Logout";
   options.ExpireTimeSpan = TimeSpan.FromHours(24);
});

#endregion



#region Database Context

builder.Services.AddDbContext<ManaCrmContext>(options =>
{
   options.UseSqlServer(builder.Configuration.GetConnectionString("ManaCrmConnection"));
});

#endregion
#region Ioc

builder.Services.AddTransient<IUserService, UserService>();


#endregion
var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
   app.UseExceptionHandler("/Home/Error");
   // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
   app.UseHsts();
}


app.UseStaticFiles();
app.UseHttpsRedirection();
app.UseMvcWithDefaultRoute();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
   name: "default",
   pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();
 

  • 1400/12/14
  • ساعت 11:51

به نظر که درست هستن

شما توی حالت ناشناس با مرورگر های متفاوت امتحان کردین ؟

با تشکر 🙏


  • 1400/12/14
  • ساعت 12:02

سپاس از پاسخگوییتان نه با حالت inCongnito هم جواب نداد 


  • 1400/12/14
  • ساعت 12:10

دوست عزیز کد های اکشن لاگینتون تون رو میفرستید ؟

با تشکر 🙏


  • 1400/12/14
  • ساعت 13:52
 تقریبا کدی هستند که استاد درس داده بودند و من جواب گرفته بودم البته با کپچا میزارم معمولا
 public async Task<IActionResult> Login(LoginViewModel login)
        {


            if (!ModelState.IsValid)
            {
                return View(login);
            }



            var user = _userService.LoginUser(login);
            if (user != null)
            {
                if (user.IsActive)
                {
                    var claims = new List<Claim>()
                    {
                        new Claim(ClaimTypes.NameIdentifier, user.UserId.ToString()),
                        new Claim(ClaimTypes.Name, user.UserName)
                    };
                    var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
                    var principal = new ClaimsPrincipal(identity);
                    var properties = new AuthenticationProperties
                    {
                        IsPersistent = login.RememberMe
                    };
                    //Login Here
                    HttpContext.SignInAsync(principal, properties);


                    ViewBag.IsSuccess = true;

                    return View();

                }
                else
                {
                    ModelState.AddModelError("Email", "حساب کاربری شما فعال نمی باشد ");
                }


            }

            ModelState.AddModelError("Email", "نام کاربری یا رمز عبور نادرست است");
            return View(login);







            #endregion



        }

  • 1400/12/15
  • ساعت 11:16

مستنداتش در مایکروسافت را مطالعه کنید 

 


  • 1400/12/17
  • ساعت 11:20

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