متاسفانه در بلیزور سرور اپ SignInManager وجود ندارد و در صورت استفاده خطای سرویس ها را نمایش میدهد. برای اهراز هویت چه بصورت identity و یا روشهای ابتکاری چاره چیست؟
توی Blazor هم برای بحث احراز هویت همه کتابخانه ها و کامپوننت های مورد نیاز تعبیه شده. اگر Razor Page شما نیاز به احراز هویت داره کافیه از تگ زیر استفاده کنید :
<AuthorizeView>
<Authorized>
</Authorized>
</AuthorizeView>
به مثال زیر توجه کنید :
<AuthorizeView>
<Authorized>
<a href="Identity/Account/Manage" class="text-white-50">Hello, @context.User.Identity.Name!</a>
<form method="post" action="Identity/Account/LogOut">
<button type="submit" class="text-white-50 nav-link btn btn-link">Log out</button>
</form>
</Authorized>
<NotAuthorized>
<a href="Identity/Account/Register" class="text-white-50">Register</a>
<a href="Identity/Account/Login" class="text-white-50">Log in</a>
</NotAuthorized>
</AuthorizeView>
در مثال بالا مشخص کردیم اگر کاربر لاگین شده بود کدهایی که در بخش Authorized هست رو نمایش بده و در غیر این صورت کدهای بخش NotAuthorized رو نمایش بده.
شما اگر نیاز به استفاده از کلاس های Identity دارید می تونید از تزریق وابستگی در Razor Page ها استفاده کنید.
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
<div>Hello</div>
@code{
}
بنابراین همون طوری که می بینید علاوه بر اینکه امکان استفاده از کلاس های Identity در blazor فراهم هست کامپوننت های دیگه ای هم برای استفاده وجود داره.
با تشکر از پاسخ شما
اما طبق گفته ماکروسافت در Blazor دیگر signInmanager کار نمیکند و در صورت اجرا بشکلی که شما اشاره کردید پیام خطای عدم رجیستر بودت سرویس ظاهر میگردد-
مشکل فقط اینجاست چطور میتونیم یک کاربر را Authenticate کنیم و به سیستم لاگین کند و Isauthenticate آن True شود
این لینک
SignInManager<TUser> and UserManager<TUser> aren't supported in Razor components.
حق با شما بود یک اشتباه در فایل Startup کرده بودم و بجای استفاده از
services.AddDefaultIdentity<IdentityUser>
از
services.AddDefaultIdentity<ApplicationUser>
استفاده کرده بودم و همین باعث شده بود اختلال بوجود بیاید.
سلام، طبق گفته شما تو این حالت وقتی تزریق وابستگی داخل کامپوننت ایجاد میشه باید از طریق متد زیر به کاربر لاگین شده دسترسی داشت:
var user = await userManager.GetUserAsync(User);
در حالیکه اینطور نیست! یعنی به (User) ایراد میگیره، ایراد کار کجاست؟
البته من از طریق کامپوننت بلیزور تونستم Register رو پیاده سازی کنم ولی هر کاری کردم نتونستم لاگین رو پیاده سازی کنم!!! و کلا تو پیاده سازی آیدنتیتی در بلیزور (تغییر پسورد، تغییر مشخصات کاربر و ... ) به مشکل برخوردم
ممنون میشم کمکم کنین.
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1400/05/03
- ساعت :
10:48:00 AM
- بازدید :
6754
- پاسخ :
5
|
تاریخ :
1400/12/06
- ساعت :
01:20:00 PM
- بازدید :
3941
- پاسخ :
1
|
تاریخ :
1402/12/25
- ساعت :
03:38:00 PM
- بازدید :
668
- پاسخ :
0
|
تاریخ :
1400/02/14
- ساعت :
04:50:00 PM
- بازدید :
3195
- پاسخ :
1
|
تاریخ :
1401/03/05
- ساعت :
11:25:00 AM
- بازدید :
2590
- پاسخ :
1
|
تاریخ :
1401/02/04
- ساعت :
03:29:00 PM
- بازدید :
2707
- پاسخ :
0
|
تاریخ :
1401/01/19
- ساعت :
03:05:00 PM
- بازدید :
3611
- پاسخ :
2
|
تاریخ :
1400/09/17
- ساعت :
07:58:00 PM
- بازدید :
2610
- پاسخ :
1
|
تاریخ :
1399/09/26
- ساعت :
11:26:00 PM
- بازدید :
3306
- پاسخ :
2
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
93
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|