در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش سی شارپ (#C) پیشرفته قسمت 92 : مقدمات امنیت

آموزش سی شارپ (#C) پیشرفته قسمت 92 : مقدمات امنیت

برای استفاده از این فیلم آموزشی باید هزینه آن را پرداخت کنید.

شما می توانید 3 دقیقه از این ویدیو را به صورت رایگان مشاهده کنید

در این قسمت از دوره آموزشی پیشرفته زبان سی شارپ وارد مبحث امنیت در دات نت خواهیم شد. مبحث امنیت از چند جهت بسیار مهم است:

  1. کنترل دسترسی کاربران به برنامه و قسمت های مختلف برنامه
  2. کنترل دسترسی برنامه به منابع سیستم
  3. ذخیره سازی اطلاعات به صورت امن جهت جلوگیری از سرقت اطلاعات

مباحث مربوط به امنیت به چند بخش تقسیم می شوند که در ابتدا به سراغ مباحث Identity و Principal رفته و نحوه کنترل دسترسی کاربران به سیستم را بررسی می کنیم. در این قسمت با مفاهیم زیر آشنا خواهیم شد:

  1. مقدمه ای بر مبحث امنیت در دات نت
  2. آشنایی با مفاهیم Authentication و Authorization
  3. آشنایی با اینترفیس های IIdentity و IPrincipal
  4. نحوه استفاده از کلاس های WindowsIdentity و WindowsPrincipal جهت استفاده از اطلاعات حساب کاربری ویندوز
  5. نحوه بررسی دسترسی یک کاربر ویندوز
  6. آشنایی با کلاس های SecurityIdentifier و NTAccount و کاربر آن ها در متد Translate
  7. نحوه استفاده از کلاس SecurityIdentifier در متد IsInRole
  8. استفاده از کلاس های GenericIdentity و GenericPrincipal
  9. کنترل سطوح دسترسی بوسیله خصوصیت PrincipalPermissionAttribute
  10. آشنایی با کلاس PrincipalPermission برای کنترل سطوح دسترسی
#identity_و_principal_در_دات_نت #آموزش_زبان_سی_شارپ #دوره_آموزشی_سی_شارپ #فیلم_آموزشی_سی_شارپ #امنیت_در_دات_نت #آموزش_برنامه_نویسی #کنترل_دسترسی_کاربران_در_سی_شارپ #عملیات_login_در_سی_شارپ
عنوان
1 آموزش سی شارپ (#C) پیشرفته قسمت 1 : مقدمه ای بر دوره متفاوت 1:31′:14″ رایگان
2 آموزش سی شارپ (#C) پیشرفته قسمت 2 : معماری دات نت و سی شارپ 39′:7″ 3,300
3 آموزش سی شارپ (#C) پیشرفته قسمت 3 : محیط Visual Studio 14′:56″ رایگان
4 آموزش سی شارپ (#C) پیشرفته قسمت 4 : ساختار برنامه ها 31′:49″ 4,400
5 آموزش سی شارپ (#C) پیشرفته قسمت 5 : انواع داده و کار با تاریخ 47′:35″ 4,400
6 آموزش سی شارپ (#C) پیشرفته قسمت 6 : رشته و آرایه 44′:29″ 4,400
7 آموزش سی شارپ (#C) پیشرفته قسمت 7 : مباحث تکمیلی OOP 25′:10″ 4,950
8 آموزش سی شارپ (#C) پیشرفته قسمت 8 : استثناء ، اینترفیس و مجموعه 44′:23″ 7,150
9 آموزش سی شارپ (#C) پیشرفته قسمت 9 : مجموعه ها (Collections) 46′:35″ 5,500
10 آموزش سی شارپ (#C) پیشرفته قسمت 10 : Delegate و Event 42′:23″ 4,950
11 آموزش سی شارپ (#C) پیشرفته قسمت 11 : متد Anonymous و Lambda 26′:24″ 4,950
12 آموزش سی شارپ (#C) پیشرفته قسمت 12 : Covariance و Pointer ها 40′:43″ 8,250
13 آموزش سی شارپ (#C) پیشرفته قسمت 13 : LINQ و عملگر های آن 58′:3″ 9,900
14 آموزش سی شارپ (#C) پیشرفته قسمت 14 : Object Life Time و سرویس GC 44′:50″ 5,500
15 آموزش سی شارپ (#C) پیشرفته قسمت 15 : Windows Form Application 32′:30″ 4,400
16 آموزش سی شارپ (#C) پیشرفته قسمت 16 : Class Library 58′:52″ 9,350
17 آموزش سی شارپ (#C) پیشرفته قسمت 17 : اسمبلی های Private و Shared 35′:37″ 4,400
18 آموزش سی شارپ (#C) پیشرفته قسمت 18 : تنظیمات در فایل config 18′:26″ رایگان
19 آموزش سی شارپ (#C) پیشرفته قسمت 19 : آشنایی با Reflection یک 45′:23″ 7,700
20 آموزش سی شارپ (#C) پیشرفته قسمت 20 : آشنایی با Reflection دو 48′:1″ 8,250
21 آموزش سی شارپ (#C) پیشرفته قسمت 21 : آشنایی با Reflection سه 22′:27″ رایگان
22 آموزش سی شارپ (#C) پیشرفته قسمت 22 : آشنایی با Reflection چهار 34′:26″ 9,350
23 آموزش سی شارپ (#C) پیشرفته قسمت 23 : قابلیت Dynamic و COM Interop 43′:14″ 6,600
24 آموزش سی شارپ (#C) پیشرفته قسمت 24: گرفتن خروجی اکسل در برنامه ها 32′:47″ 6,600
25 آموزش سی شارپ (#C) پیشرفته قسمت 25 : کار با Process ها 50′:57″ 8,250
26 آموزش سی شارپ (#C) پیشرفته قسمت 26 : کار با Application Domain ها 30′:15″ رایگان
27 آموزش سی شارپ (#C) پیشرفته قسمت 27 : آشنایی با CIL 32′:37″ 5,500
28 آموزش سی شارپ (#C) پیشرفته قسمت 28 : نوشتن کد مستقیم با زبان IL 1:17′:5″ 14,850
29 آموزش سی شارپ (#C) پیشرفته قسمت 29 : Dynamic Assembly ها 28′:45″ 5,500
30 آموزش سی شارپ (#C) پیشرفته قسمت 30 : برنامه نویسی Asynchronous 35′:15″ 5,500
31 آموزش سی شارپ (#C) پیشرفته قسمت 31 : کار با System.Threading 57′:36″ 8,250
32 آموزش سی شارپ (#C) پیشرفته قسمت 32 : برنامه نویسی Parallel 32′:16″ 4,400
33 آموزش سی شارپ (#C) پیشرفته قسمت 33 : قابلیت async و await 10′:46″ رایگان
34 آموزش سی شارپ (#C) پیشرفته قسمت 34 : BackgroundWorker و Timer 21′:57″ 3,850
35 آموزش سی شارپ (#C) پیشرفته قسمت 35 : کار با پوشه و فایل 47′:12″ 7,700
36 آموزش سی شارپ (#C) پیشرفته قسمت 36 : ایجاد فایل و پوشه 39′:18″ 5,500
37 آموزش سی شارپ (#C) پیشرفته قسمت 37 : خواندن و نوشتن در فایل 18′:50″ رایگان
38 آموزش سی شارپ (#C) پیشرفته قسمت 38 : FileSystemWatcher 16′:33″ 3,850
39 آموزش سی شارپ (#C) پیشرفته قسمت 39 : کار با Stream ها 36′:41″ 5,500
40 آموزش سی شارپ (#C) پیشرفته قسمت 40 : قابلیت Serialization 29′:29″ 6,600
41 آموزش سی شارپ (#C) پیشرفته قسمت 41 : نوشتن برنامه دفترچه تلفن 43′:17″ 9,350
42 آموزش سی شارپ (#C) پیشرفته 42 : کار با پایگاه داده در سی شارپ 41′:59″ 9,350
43 آموزش سی شارپ (#C) پیشرفته قسمت 43 : جلوگیری از SQL Injection 20′:14″ 7,150
44 آموزش سی شارپ (#C) پیشرفته قسمت 44 : Connection String 19′:2″ 6,600
45 آموزش سی شارپ (#C) 45 : ذخیره و رمز نگاری Connection String 19′:12″ 8,250
46 آموزش سی شارپ (#C) پیشرفته قسمت 46 : Repository و کلاس Reusable 32′:13″ 6,600
47 آموزش سی شارپ (#C) پیشرفته قسمت 47 : Repository های Generic یک 55′:45″ 10,450
48 آموزش سی شارپ (#C) پیشرفته قسمت 48: ایجاد Repository های Generic 33′:54″ 7,150
49 آموزش سی شارپ (#C) پیشرفته قسمت 49: برنامه انبارداری و فروشگاه یک 14′:40″ رایگان
50 آموزش سی شارپ (#C) پیشرفته 50 : برنامه انبارداری و فروشگاه دو 57′:17″ 7,150
51 آموزش سی شارپ (#C) پیشرفته قسمت 51:برنامه انبارداری:ساختار پروژه 1:14′:53″ 9,350
52 آموزش سی شارپ (#C) پیشرفته قسمت 52 : تست Repository انبارداری 45′:33″ 6,600
53 آموزش سی شارپ (#C) پیشرفته قسمت 53 : استفاده از StructureMap 32′:58″ 6,050
54 آموزش سی شارپ (#C) پیشرفته 54 : تنظیمات اولیه برنامه انبارداری 1:8′:11″ 7,150
55 آموزش سی شارپ (#C) پیشرفته قسمت 55 : Dependency Injection 40′:20″ رایگان
56 آموزش سی شارپ (#C) پیشرفته قسمت 56:برنامه انبارداری:داده اولیه 44′:53″ 3,850
57 آموزش سی شارپ (#C) پیشرفته قسمت 57 : تاریخ شمسی در سی شارپ 19′:21″ رایگان
58 آموزش سی شارپ (#C) پیشرفته قسمت 58 : User Control 13′:10″ رایگان
59 آموزش سی شارپ (#C) پیشرفته قسمت 59:برنامه انبارداری:فرم اصلی 58′:35″ 5,500
60 آموزش سی شارپ (#C) پیشرفته قسمت 60:برنامه انبارداری:View ها 29′:22″ رایگان
61 آموزش سی شارپ (#C) پیشرفته قسمت 61:برنامه انبارداری:Action ها 26′:22″ 3,850
62 آموزش سی شارپ (#C) پیشرفته قسمت 62 : Expression Tree 35′:38″ 4,400
63 آموزش سی شارپ (#C) پیشرفته قسمت 63:برنامه انبارداری:GridView 38′:11″ 4,400
64 آموزش سی شارپ (#C) پیشرفته قسمت 64:برنامه انبارداری:فرم اطلاعات 1:17′:9″ 8,250
65 آموزش سی شارپ (#C) پیشرفته قسمت 65:برنامه انبارداری:Output 19′:32″ رایگان
66 آموزش سی شارپ (#C) پیشرفته 66:برنامه انبارداری DateTimePicker 1:4′:13″ 8,250
67 آموزش سی شارپ (#C) پیشرفته 67 : برنامه انبارداری : کنترل Dropdown 23′:8″ رایگان
68 آموزش سی شارپ (#C) پیشرفته 68: برنامه انبارداری:DateTimePicker 42′:2″ رایگان
69 آموزش سی شارپ (#C) پیشرفته قسمت 69:برنامه انبارداری:اطلاعات پایه 34′:7″ رایگان
70 آموزش سی شارپ (#C) پیشرفته قسمت 70:برنامه انبارداری:اطلاعات پایه 17′:9″ رایگان
71 آموزش سی شارپ (#C) پیشرفته قسمت 71 : کنترل TreeView 34′:11″ رایگان
72 آموزش سی شارپ (#C) پیشرفته قسمت 72 : کنترل ImageList در TreeView 8′:9″ رایگان
73 آموزش سی شارپ (#C) پیشرفته قسمت 73:برنامه انبارداری:TreeView 37′:34″ 6,050
74 آموزش سی شارپ (#C) پیشرفته قسمت 74:برنامه انبارداری:گروه های کالا 25′:15″ رایگان
75 آموزش سی شارپ (#C) پیشرفته 75 : برنامه انبارداری:پارامتر محصولات 35′:43″ رایگان
76 آموزش سی شارپ (#C) پیشرفته قسمت 75 : پارامتر محصولات 22′:35″ رایگان
77 آموزش سی شارپ (#C) پیشرفته قسمت 77: برنامه انبارداری : رسید انبار 46′:24″ رایگان
78 آموزش سی شارپ (#C) پیشرفته قسمت 78 : برنامه انبارداری : ثبت رسید 35′:19″ رایگان
79 آموزش سی شارپ (#C) پیشرفته قسمت 79 : کار با DataSet 48′:52″ 7,700
80 آموزش سی شارپ (#C) پیشرفته قسمت 80 : فیلتر بوسیله DataView 9′:9″ رایگان
81 آموزش سی شارپ (#C) پیشرفته قسمت 81 : Transaction ها در ADO.NET 12′:12″ رایگان
82 آموزش سی شارپ (#C) پیشرفته قسمت 82 : مقدمه ای بر Entity Framework 26′:7″ 5,500
83 آموزش سی شارپ (#C) پیشرفته قسمت 83 : Mapping در Entity Framework 39′:44″ 7,700
84 آموزش سی شارپ (#C) پیشرفته قسمت 84 : Data Annotations 41′:15″ 7,700
85 آموزش سی شارپ (#C) پیشرفته قسمت 85 : Fluent API 46′:16″ 7,700
86 آموزش سی شارپ (#C) پیشرفته قسمت 86 : وراثت (Inheritance) 38′:23″ رایگان
87 آموزش سی شارپ (#C) پیشرفته قسمت 87 : مباحث پیشرفته در Mapping 51′:50″ 8,800
88 آموزش سی شارپ (#C) پیشرفته قسمت 88 : بحث تکمیلی Entity Framework 1:10′:44″ رایگان
89 آموزش سی شارپ (#C) پیشرفته قسمت 89 : تغییرات روی بانک اطلاعاتی 31′:0″ 7,150
90 آموزش سی شارپ (#C) پیشرفته قسمت 90 : Concurrency و Transaction 19′:18″ رایگان
91 آموزش سی شارپ (#C) پیشرفته قسمت 91 : فایل XML و LINQ2XML 26′:18″ 6,600
92 آموزش سی شارپ (#C) پیشرفته قسمت 92 : مقدمات امنیت 29′:24″ 8,250
93 آموزش سی شارپ (#C) پیشرفته قسمت 93 : امنیت با Claim 31′:18″ 6,600
94 آموزش سی شارپ (#C) پیشرفته قسمت 94 : رمزنگاری 29′:48″ 7,150
95 آموزش سی شارپ (#C) پیشرفته قسمت 95 : رمزنگاری Symmetric 45′:10″ 11,550
96 آموزش سی شارپ (#C) پیشرفته قسمت 96 : رمزنگاری Asymmetric 31′:40″ 9,350
97 آموزش سی شارپ (#C) پیشرفته قسمت 97 : امنیت با CLR 15′:23″ رایگان
98 آموزش سی شارپ (#C) پیشرفته قسمت 98 : آموزش WPF 45′:24″ رایگان
99 آموزش سی شارپ (#C) پیشرفته قسمت 99 : آموزش WPF 42′:11″ 7,700
100 آموزش سی شارپ (#C) پیشرفته قسمت 100 : آموزش WPF 59′:42″ 8,250
101 آموزش سی شارپ (#C) پیشرفته قسمت 101 : آموزش WPF 37′:18″ رایگان
102 آموزش سی شارپ (#C) پیشرفته قسمت 102 : آموزش WPF 1:10′:17″ 11,550
103 آموزش سی شارپ (#C) پیشرفته قسمت 103 : آموزش WPF 1:18′:54″ 11,550
104 آموزش سی شارپ (#C) پیشرفته 104: Localization Globalization در WPF 24′:37″ 7,150
105 آموزش سی شارپ (#C) پیشرفته قسمت 105 : آموزش UWP 40′:24″ رایگان
106 آموزش سی شارپ (#C) پیشرفته قسمت 106 : آموزش UWP 28′:37″ رایگان
107 آموزش سی شارپ (#C) پیشرفته قسمت 107 : آموزش UWP 21′:57″ رایگان
108 آموزش سی شارپ (#C) پیشرفته قسمت 108 : آشنایی با GDI+ و Printing 29′:0″ 6,050
109 آموزش سی شارپ (#C) پیشرفته قسمت 109 : برنامه نویسی شبکه 51′:45″ 8,800
110 آموزش سی شارپ (#C) پیشرفته قسمت 110 : تست برای کدها Unit Testing 23′:24″ 6,050
111 آموزش سی شارپ (#C) پیشرفته 111 : Managed Extensibility Framework 24′:1″ رایگان
112 آموزش سی شارپ (#C) پیشرفته قسمت 112 : Tracing و EventLog 50′:40″ 9,350
113 آموزش سی شارپ (#C) پیشرفته قسمت 113 : Performance Counters 18′:55″ رایگان
114 آموزش سی شارپ (#C) پیشرفته قسمت 114 : Windows Service 17′:14″ 4,950
115 آموزش سی شارپ (#C) پیشرفته قسمت 115 : کامپایلر دات نت (Roslyn) 1:2′:55″ 9,900
116 آموزش سی شارپ (#C) پیشرفته قسمت 116 : Deploy برنامه ها 43′:46″ رایگان
زمان و قیمت کل 72:17′:18″ 548,350
26 نظر
توسعه دهنده مایکروسافت

سلام مهندس خوبین ؟؟؟

ممنون از آموزشهای جدیدی که قرار دادین واقعا بی نظیرن

میخواستم بپرسم قسمت فروش کی شروع میشه ؟؟؟

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

توسعه دهنده مایکروسافت

مهندس والا بخش فروش رو زود شروع کنید من منتظرم

واقعا دوره طولانی شد

بخش انبارداری ما کار خیلی خاصی انجام ندادیم

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

مهندس فرموده اید

(سلام، ممنون از لطفتون، برای دوره فروش بعد از اتمام بخش WPF یک پروژه رو شروع می کنیم، اما احتمال زیاد در قالب یک دوره جداگانه، چون دوره پیشرفته سی شارپ خیلی طولانی شده و بهتره که پروژه کاربردی در قالب یک دوره جداگانه باشه.

)

بنظرم بهتره این دوره را بعداز اموزش mvc.core شروع کنید که تحت وب باشه

ابوالفضل رهنما

سلام

مهندس در کدهای

[PrincipalPermission(SecurityAction.Demand,Role = "ra")]
new PrincipalPermission(null,"ra").Demand();

ایا می توان مجموعه ای از Role را پاس داد یا فقط یک Role را می توان پاس داد

باتشکر

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

مهندس من کلاس زیر را ساخته ام

    public class UserRole
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

و برای نمونه کنترلر زیر را هم نوشته ام

  public ActionResult Create([Bind(Include = "UserId,Name,Password")] User user)
        {
            if (ModelState.IsValid)
            {
                if (db.Users.Any(c => c.Name==user.Name))
                {
                    var r1=new List<UserRole>
                    {
                        new UserRole{Name = "f"},
                        new UserRole{Name = "d"}
                    };
                    var identity = new System.Security.Principal.GenericIdentity(user.Name);
                    string[] myArray = r1.Select(c=>c.Name).ToArray();
                    var principal = new GenericPrincipal(identity, myArray);
                    Thread.CurrentPrincipal = principal;
                    if (Thread.CurrentPrincipal.IsInRole("f"))
                    {
                        return RedirectToAction("Index", "Users");
                    }
                }
            }
            return View(user);
        }

که درست کار میکنه اما وقتی در کنترل دیگری بخواهم همین دستور را بنویسم جواب false برمیگرداند

  public ActionResult Edit(int? id)
        {
            if (Thread.CurrentPrincipal.IsInRole("f"))
            {
                User user = db.Users.Find(id);
                if (user == null)
                {
                    return HttpNotFound();
                }

                return View(user);
            }
            else
            {
                return RedirectToAction("Index", "Users");
            }
        }

برای حل این مشکل باید چکار کنم

باتشکر

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

مهندس وقت بخیر

        public ActionResult Edit(int? id)
        {
            var a = System.Web.HttpContext.Current.User;
            var b = Thread.CurrentPrincipal;
            var c = a.Identity.Name;
            var d = b.Identity.Name;
            return View();
        }

باکد بالا می توانم نام کاربری را بدست بیاورم اما نمی دانم چگونه باید roleهای پاس داده شده است را بدست بیاورم و عملیات if مورد نظر را انجام بدهم

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

using System;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using Permission_01.Models;
-------------------------------------------
 if (HttpContext.Current.User.IsInRole("Index"))
            {
                return View();
            }
            else
            {
                return RedirectToAction("Login", "Home");
            }

ارور زیر را میدهد

Severity Code Description Project File Line Suppression State

Error CS1061 'HttpContextBase' does not contain a definition for 'Current' and no extension method 'Current' accepting a first argument of type 'HttpContextBase' could be found (are you missing a using directive or an assembly reference?) Permission_01

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

بله

  public ActionResult Index()
        {
            if (HttpContext.Current.User.IsInRole("Index"))
            {
                return View();
            }
            else
            {
                return RedirectToAction("Login", "Home");
            }
        }

البته تو view هم میخواهم استفاده کنم

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

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

 [HttpPost]
        public ActionResult Login( User user)
        {
            if (ModelState.IsValid)
            {
                if (db.Users.Any(c=>c.UserName == user.UserName && c.Password == user.Password))
                {
                    //var roles = db.Permissions.Where(c => c.UsersId == user.UserName).Select(c => new
                    //{
                    //    Id = c.RoleId,
                    //    Name = c.Role.Name
                    //}).ToList();
                    var roles = new List<UserRole>
                    {
                        new UserRole{Name = "Index"},
                        new UserRole{Name = "About"}
                    };
                    var ticket = new FormsAuthenticationTicket(
                        1,
                        user.UserName.ToString(),
                        DateTime.UtcNow,
                        DateTime.UtcNow.AddDays(10),
                        true,
                        string.Join(",", roles));
                    var encryptedTicket = FormsAuthentication.Encrypt(ticket);
                    var authenticationTicketCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
                    {
                        Expires = ticket.Expiration,
                        //Domain = '.yourdomain.com'
                    };
                    Response.Cookies.Add(authenticationTicketCookie);
                    return RedirectToAction("Index", "Home");
                }
                return View();
            }
            return View();
        }

و

public ActionResult Index()
        {
            if (User.IsInRole("Index"))
            {
                return View();
            }
            else
            {
                return RedirectToAction("Login", "Home");
            }
        }

و

using System;
using System.Security.Principal;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.Security;


namespace Permission_01
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

        protected void Application_AuthorizeRequest()
        {
            var authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
            if (authCookie != null)
            {
                FormsAuthenticationTicket ticket = null;
                try
                {
                    ticket = FormsAuthentication.Decrypt(authCookie.Value);
                }
                catch (ArgumentException)
                {
                }
                if (ticket != null)
                {
                    Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(ticket.Name), ticket.UserData.Split(','));
                    HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(ticket.Name), ticket.UserData.Split(','));
                }
            }
        }
    }
}

اما برای چی if (User.IsInRole("Index")) را false برمیگرداند

لطفا راهنمای بفرمایید

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

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

  <system.web>
    <compilation debug="true" targetFramework="4.7" />
    <httpRuntime targetFramework="4.7" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
    <authentication mode="Forms">
      <forms name="ticket" protection="All" path="/" timeout="2880" domain="localhost"></forms>
    </authentication>
  </system.web>

اما بازهم if (User.IsInRole("Index")) را false برمیگرداند درصورتیکه باید true باشد

هنگام ایجادUserData بصورت زیر ایجاد میشود

UserData = "{ Id = 2, Name = About },{ Id = 1, Name = Index },{ Id = 3, Name = Contact }"

درضمن User.Identity.Name را درست برمیگرداند

نمیدانم باید چکارکنم

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

مهندس در

User.IsInRole

چه تعداد رکورد(نقش) میشود مقدار دهی کرد(تعداد255 یا هرچقدر که بخواهیم)

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

مهندس من کد زیر را نوشته ام

var ticket = new FormsAuthenticationTicket(
                                            1,
                                            UserId.ToString(),
                                            DateTime.UtcNow,
                                            DateTime.UtcNow.AddMinutes(60),
                                            true,
                                            string.Join(",", roles)
                                            );
                                        var encryptedTicket = FormsAuthentication.Encrypt(ticket);
                                        var authenticationTicketCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
                                        {
                                            Expires = ticket.Expiration
                                        };
                                        Response.Cookies.Add(authenticationTicketCookie);

وقتی تعداد roleها 150 است مشکلی ندارد اما وقتی تعداد رولها 155 میشود

 protected void Application_AuthorizeRequest()
        {
            var authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
            if (authCookie != null)
            {
                FormsAuthenticationTicket ticket = null;
                try
                {
                    ticket = FormsAuthentication.Decrypt(authCookie.Value);
                }
                catch (ArgumentException)
                {
                }
                if (ticket != null)
                {
                    List<string> roles=new List<string>();
                    if (!string.IsNullOrEmpty(ticket.UserData))
                    {
                        roles.AddRange(ticket.UserData.Split(','));
                    }
                    Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(ticket.Name), roles.ToArray());
                    HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(ticket.Name), roles.ToArray());
                }
            }
        }

var authCookie را برابر null میدهد

برای حل این مشکل باید چکارکنم

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

ابوالفضل رهنما

سلام

مهندس جان لطف میکنید یک نمونه کد ساده قرار بدهید

(رولها را بخواند)

باتشکر

برای مشاهده نظرات مدرس باید این ویدیو را خریداری کنید.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....