مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

ساخت extension برای FullName در Identity

  • شنبه 21 بهمن 1396
  • 09:42
تشکر میکنم

سلام 
برای اینکه بخواهیم یک extension بسازیم برای identity که به مشخصه FullName ( طبق آموزش Identity ) که هر جا خواستیم به اون دسترسی داشته باشیم 
مثل User.GetUserName 
به چه صورت باید Extension برای FullName ساخت ؟

پاسخ های این پرسش

تعداد پاسخ ها : 11 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 21 بهمن 1396
  • 09:51
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;
    }
}

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 21 بهمن 1396
  • 09:56

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

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 21 بهمن 1396
  • 09:59

بله در کلاس جدا باید بنویسید 

از کدی که دادم کاملا مشخصه 

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 21 بهمن 1396
  • 10:08

برای این که در View استفاده کنم به چه صورت دسترسی پیدا کنم ؟@User.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 21 بهمن 1396
  • 10:13

به همین صورتی که نوشتید میتونید دسترسی پیدا کنید

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 21 بهمن 1396
  • 10:17

ولی GetUserEmail رو نشون نمیده 

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 21 بهمن 1396
  • 10:26

UserName و UserId کاربر جاری توسط Identity مقدار دهی می شود و آن ها یک claim هستند شما میتوان یک claim به User.Identity اضافه کنید و از آدرس ایمیل کاربر جاری را دریافت کنید. راه های دیگه هم وجو دارد لینک های زیر را بررسی کنید:

How to add claims in ASP.NET Identity - Stack Overflow

c# - get current user email in Identity - Stack Overflow

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 21 بهمن 1396
  • 14:35

از این راه رفتم ولی در 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;
        }

    }
}


کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 21 بهمن 1396
  • 14:45

منظورتون از در View پیدا نمیشه چیه ؟

 متوجه نشدم

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 21 بهمن 1396
  • 14:48

منظورم اینه که دسترسی به GetFullName نداشتم و پیدا نمیکرد 


@Html.ActionLink("سلام  " + @Base_Management.Models.IdentityExtensions.GetFullName(User.Identity),"Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })

این شکل دسترسی به Extension صحیحه ؟؟

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 21 بهمن 1396
  • 14:52
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

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

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)