سلام
برای اینکه بخواهیم یک extension بسازیم برای identity که به مشخصه FullName ( طبق آموزش Identity ) که هر جا خواستیم به اون دسترسی داشته باشیم
مثل User.GetUserName
به چه صورت باید Extension برای FullName ساخت ؟
public static class IdentityExtensions { public static string GetUserEmail(this IIdentity identity) { if (identity == null) { throw new ArgumentNullException("identity"); } var ci = identity as ClaimsIdentity; if (ci != null) { return ci.FindFirstValue(ClaimTypes.Email); } return null; } }
در یک کلاس جدا بنویسم ؟
همین کافیه یا تعقییرات دیگه هم لازم داره ؟
بله در کلاس جدا باید بنویسید
از کدی که دادم کاملا مشخصه
برای این که در View استفاده کنم به چه صورت دسترسی پیدا کنم ؟@User.
به همین صورتی که نوشتید میتونید دسترسی پیدا کنید
ولی GetUserEmail رو نشون نمیده
UserName و UserId کاربر جاری توسط Identity مقدار دهی می شود و آن ها یک claim هستند شما میتوان یک claim به User.Identity اضافه کنید و از آدرس ایمیل کاربر جاری را دریافت کنید. راه های دیگه هم وجو دارد لینک های زیر را بررسی کنید:
از این راه رفتم ولی در View پیدا نمیکنه GetFullName
namespace Base_Management.Models { public static class IdentityExtensions { public static string GetFullName(this IIdentity identity) { ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext() .GetUserManager<ApplicationUserManager>() .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); return user.FullName; } } }
منظورتون از در View پیدا نمیشه چیه ؟
متوجه نشدم
منظورم اینه که دسترسی به GetFullName نداشتم و پیدا نمیکرد
@Html.ActionLink("سلام " + @Base_Management.Models.IdentityExtensions.GetFullName(User.Identity),"Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
این شکل دسترسی به Extension صحیحه ؟؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)