سؤال

أكتب وحدة تحكم مثل أدناه:

public class AccountController : Controller
{
    public ActionResult Login(/*---*/)
    {
        GenericIdentity identity = new GenericIdentity("userName");
        GenericPrincipal principal = new GenericPrincipal(identity, new string[] { "role1", "role2" });
        this.HttpContext.User = principal;
        /*---*/;
    }
}

بعد تسجيل الدخول، يمكنني الحصول على اسم المستخدم حسب المستخدم. الجدولية .Name في وحدة تحكم أخرى. لكن user.isinrole ("Roil1") دائما إرجاع FALSE.

كيف يمكنني تعيين قيمة للمستخدم، لا أريد استخدام العضوية ...

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

المحلول

جلالة الملك.

باستخدام العضوية؟

على الأقل API المستوى الأدنى. تحتاج إلى تعيين تكنولوجيا المعلومات في بعض الأحداث (والتي تتحول أساسا إلى ملف تعريف ارتباط وتتمتع بكل مكالمة).

التفاصيل في http://support.microsoft.com/kb/306590.

أو أيضا في http://msdn.microsoft.com/en-us/library/aa302399.aspx.

نصائح أخرى

تحتاج إلى الاستمرار في بيانات المستخدم في مكان ما حتى تتمكن جميع طلبات الصفحة اللاحقة الوصول إليها. عادة ما تقوم بإنشاء تذكرة مصادقة وتخزينها في ملف تعريف ارتباط. ثم لكل طلب استخراج البيانات وإنشاء iPrincipal الخاص بك. هذا يمكن القيام به في Application_AuthenticateRequest طريقة Global.ascx،

MVC - كيفية تخزين / تعيين أدوار المستخدمين المصادقين لديه المزيد من المعلومات حول طريقة بسيطة للقيام بما تريد.

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