نحوه استفاده از Web Api در Asp.net Core رو بلدم. اما می خوام آموزش احراز هویت در web api در Asp.net Core رو بدونم که چجوری هست؟
در واقع یک Api نوشتم که کاربر قبل از استفاده از این Api باید حتما احراز هویت بشه یا به عبارتی لاگین بکنه و بعد از اون بتونه از این Api استفاده کنه.
برای احراز هویت Web Api معمولا از JWT در Asp.net core استفاده میشه. که میتونید این لینک رو در این مورد مطالعه کنید که روش کارش در عکس زیر مشخص هست.
اما راه حل ساده دیگه ای هم وجود داره که اگر نخواید وارد مسائل و سختی های JWT بشید می تونید از این راه حل ها استفاده کنید. یکی از این موارد Login کردن کاربر توسط Web Api هست. که خیلی ساده و راحت می تونید این کار رو انجام بدید.
خب یه مثال رو براتون در این مورد میارم. فرض کنید کنترلر زیر که یک Web Api هست رو داریم. همونطوری که میبینید در بالای این Controller از Authorize استفاده شده به این معنی که برای استفاده از اکشن های این کنترلر باید حتما احراز هویت انجام بشه.
[Produces("application/json")]
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class CustomerApiController : ControllerBase
{
private readonly dbContext _context;
public CustomerApiController(dbContext context)
{
_context = context;
}
//api/CustomerApiController
[HttpGet]
public IEnumerable<Customer> GetAllCustomer()
{
return _context.Customer_Tbl.ToList();
}
}
خب در کدهای بالا یک Api داریم که قرار هست کاربران ما با فراخوانی این Api لیست همه مشتریان رو ببینن ولی قبل از اون باید حتما احراز هویت انجام بشه. چون اگر با استفاده از نرم افزار Postman هم تست کنید می بینید که اطلاعاتی رو نمایش نمیده. حالا چجوری احراز هویت رو انجام بدیم ؟
یک کنترلر دیگه به نام UserManagementApiController درست کنید. دسترسی به این کنترلر نیاز به احراز هویت نداره. در واقع ویژگی Authorize رو در اینجا نداریم.
[HttpPost]
public async Task<IActionResult> Login([FromBody] LoginViewModel model)
{
if (ModelState.IsValid)
{
var user = await _userManager.FindByNameAsync(model.UserName);
if (user == null)
{
return BadRequest(new { message = "اطلاعات ورود صحیح نیست." });
}
else
{
var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, true, lockoutOnFailure: false);
if (result.Succeeded)
{
return Ok(new { message = "شما با موفقیت وارد شدید.", firstname = user.FirstName, family = user.Family });
}
else
{
return BadRequest(new { message = "اطلاعات ورود صحیح نیست." });
}
}
}
return BadRequest(new { message = "نام کاربری یا رمز عبور وارد نشده است" });
}
در این کنترلر یک اکشن به نام Login داریم که کاربر قبل از اینکه بخواد به اطلاعات و اکشن های کنترلر Customer دسترسی داشته باشه باید از طریق این اکشن Username و Password خودش رو ارسال کنه و بعد از اینکه با موفقیت لاگین انجام شد بره و به سایر Api ها دسترسی داشته باشه.
توی خود سایت microsoft هم در مورد Web Api Authorize میتونی مطالعه کنه.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
214
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
396
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
567
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2011
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|