سؤال

أنا أستخدم مصادقة Windows على موقع ويب حيث يقوم المستخدمون بإنشاء تقارير مخزنة في قاعدة بيانات. عندما أقوم بحفظ تقرير ، أريد أن أعرف أي المستخدم قام بملئه ، لذلك كنت أقوم بتخزين SecurityIdentifier من WindowsIdentity في قاعدة البيانات لتحديد المستخدم الذي يملأ التقرير. فيما يلي الرمز الذي أستخدمه للحصول على قيمة SecurityIdentifier لمستخدم Windows الحالي:

public static string GetCurrentUserSID()
{
    IPrincipal princ = HttpContext.Current.User;
    WindowsIdentity winId = princ.Identity as WindowsIdentity;
    SecurityIdentifier si = winId.User;
    string securityIdentifierValue = winId.User.Value;
    return securityIdentifierValue;
}

أسئلة

  1. هل أفعل الشيء الصحيح عن طريق تخزين securityidentifier في قاعدة البيانات بدلاً من اسم المستخدم أو قيمة أخرى؟ ما هي أفضل الممارسات التي يجب متابعتها في هذا النوع من الموقف؟

  2. كيف يمكنني الحصول على اسم المستخدم للمستخدم من قيمة SecurityIdenceIfier التي قمت بتخزينها؟

هل كانت مفيدة؟

المحلول

يجب أن تحتوي على اسم المستخدم:

HttpContext.Current.User.Identity.Name
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top