دریافت کاربر جاری در Api

kashanchi

عضویت : 1396/09/22 پرسش ها : 40 پاسخ ها : 53

دریافت کاربر جاری در Api

ارسال شده در : ‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۰:۴۹

سلام استاد ، 
طبق آموزش در jwt که وقتی کاربر لاگین میکنه و یه token ایجاد میشه و به کلاینت ارسال میشه .
حالا اگه از طرف کلاینت اطلاعات خودش رو درخواست می کنه و token که بهش دادیم رو برمیگردونه ، حالا چه جوری با استفاده از token ، بتونم کاربر رو بگیرم ؟

اصلا احتیاجی هست که با token کاربر رو بگیرم نمیشه با signInManager.PasswordSignInAsync لاگین کرد بعد موقع درخواست اطاعاتش با استفاده از 
 

 var userId = HttpContext.User.Claims.FirstOrDefault().Value;

کاربر رو بگیرم ، کاری که دو دوره انگولار انجام دادید .

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8081
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۰۳

سلام 

با User.Identity.name میتونید دریافت کنید 

خودش از توکن تشخیص میده 

0 تشکر

kashanchi

عضویت : 1396/09/22 پرسش ها : 40 پاسخ ها : 53
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۴۹

بعد لاگین چک می کنم خالی هست این کد لاگینم هست 

 

[HttpPost("login")]
        public async Task<IActionResult> Login([FromBody]   LoginViewModel login)

        {
            if (!ModelState.IsValid)
            {
                return BadRequest("The Model State Is Not Valid");
            }
           
            var user = await _userRepository.GetAsync(x => x.UserName == login.Username);

            if (user == null)
                return BadRequest(new { username = "نام کاربری یا رمز عبور اشتباه می باشد" });


            return Ok(new { token = CreateToken(user) });
        }
 public string CreateToken(ApplicationUser user)
        {
            var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Verify"));
            var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);
            var tokenOption = new JwtSecurityToken(
                issuer: "http://localhost:55705",
                claims: new List<Claim>
                {
                    new Claim(ClaimTypes.Name,user.UserName),
                    new Claim(ClaimTypes.Role,"Customer")
                }
                );
            return new JwtSecurityTokenHandler().WriteToken(tokenOption);
        }

 درسته ؟

مگر اینکه با متد signInManager.PasswordSignInAsync لاگین انجام بشه بعد اون User.identity.Name جواب میده 
این روش درسته ؟

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8081
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۵۲
RequestContext.Principal.Identity.GetUserId();

این رو امتحان کنید 

0 تشکر

kashanchi

عضویت : 1396/09/22 پرسش ها : 40 پاسخ ها : 53
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۲:۰۴

منظورتون از RequestContext نمی شناسه 

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8081
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۲:۰۵

سرچ کنید Get Current User Wep Api Token Base

0 تشکر

kashanchi

عضویت : 1396/09/22 پرسش ها : 40 پاسخ ها : 53
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۲:۳۸

سرچ کردم یه سری روش ها بود اون هم خالی نشون میداد مقدار رو . 

مگر اینکه با  PasswordSignInAsync یا .... لاگین کنم اوکی میشه 

 سوالم اینه شما در خودتون به چه روش انجام میدید  از متدها identity هم استفاده می کنید ؟ مثلا (userManager.CreateAsync,signInManager.PasswordSignInAsync  و ..... ) اصولی هست ؟ استفادش در کنار jwt چون وقتی از اینها استفاده  کنم دیگه نیاز به token نیست 

نباید token ذخیره بشه ؟

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8081
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۳:۴۷

ما با Token کار میکنیم 

نمونه زیر رو ببینید 

پیاده سازی سیستم احراز هویت با jwt در ASP.NET Core

0 تشکر

kashanchi

عضویت : 1396/09/22 پرسش ها : 40 پاسخ ها : 53
ارسال شده در :‫۵ ماه قبل، چهار شنبه ۱۹ تیر ۱۳۹۸، ساعت ۰۰:۳۳

ممنون استاد، یه سوال اینکه 
نمیشه همراه با jwt از identity هم استفاده کرد ؟
مثلا برای دریافت کاربر جاری به جای اینکه بیام token رر بگیریم از کلاینت بعد در دیتابیس جستحو کنیم متعلق به چه کسی است 
به جای اینکار بیام از identity و از متد _userMange.GetUserAsync استفاده کنیم ؟ 

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8081
ارسال شده در :‫۵ ماه قبل، چهار شنبه ۱۹ تیر ۱۳۹۸، ساعت ۰۹:۳۵

بله میشه 

توکن رو به همراه کد کاربر در بانک ذخیره کنید 

0 تشکر

kashanchi

عضویت : 1396/09/22 پرسش ها : 40 پاسخ ها : 53
ارسال شده در :‫۵ ماه قبل، پنج شنبه ۲۰ تیر ۱۳۹۸، ساعت ۱۰:۴۵

خب سوال من اینه وقتی از طرف کلاینت token هر دفعه اراسال میشه از طریق اون میشه به  Claim ها دسترسی داشت و با نام کاربری داخل Claim کاربر رو گرفت 
چه احتیاجی به ذخیره کردن token داره ؟

 

0 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید