نمایش نتایج 1 تا 24 از 24

نام تاپیک: session

  1. #1

    session

    سلام.
    من UserID رو از Sessionمیخونم و تقریبا تو همه Action هام به UserID نیاز دارم. آیا راهی وجود داره که اول هر کنترلر بیام مقدار UserID رویکبار بخونم و داخل یه متغیر بریزم بعد همه Action ها از اون متغیر بخونن؟ یا اینکه مجبورم داخل هر اکشن یکبار از سشن بخونم

  2. #2

    نقل قول: session

    اصلا نیازی به session ندارید session واسه asp قدیم هست. نه واسه MVC

    شما UserName از var My = User.Identity بخونید و به مراتب با استفاده از UserName ، از UserProfile
    UserId بخونید

    یا UserId که با اول از UserProfie خوندید رو توسط TempData به Action های دیگه پاس بدید

  3. #3

    نقل قول: session

    اولش با این روش رفتم ولی نکته ای که بود این بود که من RoleID و RoleName کاربر رو هم علاوه بر UserID میخوام که Identity نداره.
    به همین دلیل رفتم سراغ سشن

  4. #4

    نقل قول: session

    نقل قول نوشته شده توسط ali_autumnal مشاهده تاپیک

    شما UserName از var My = User.Identity بخونید و به مراتب با استفاده از UserName ، از UserProfile
    UserId بخونید
    منظورتون اینه که Select بزنم رو جدول یوزرهام و با استفاده از UserName بقیه اطلاعات موردنظرمو بدست بیارم؟

  5. #5

    نقل قول: session

    آره دقیقا

    چه لزومی داره Role ها رو بخونید. خود Authorize این کارو انجام میده


    [InitializeSimpleMembership]
    [Authorize(Roles = "Administrator")]

  6. #6

    نقل قول: session

    کنترلر ها هم یک کلاس هستند و شما می توانید با ساختن متدی هم نام اسم کلاس درون همون کنترلر اون کلاس رو Initialize کنید. و مقدار متغیر خاصی رو تعیین کنید.

  7. #7

    نقل قول: session

    نقل قول نوشته شده توسط hakim22 مشاهده تاپیک
    کنترلر ها هم یک کلاس هستند و شما می توانید با ساختن متدی هم نام اسم کلاس درون همون کنترلر اون کلاس رو Initialize کنید. و مقدار متغیر خاصی رو تعیین کنید.
    حکیم جان داخل سازنده ، سشن ، نال میشه. چرا؟؟؟؟

  8. #8

    نقل قول: session

    نقل قول نوشته شده توسط ali_autumnal مشاهده تاپیک
    آره دقیقا

    چه لزومی داره Role ها رو بخونید. خود Authorize این کارو انجام میده


    [InitializeSimpleMembership]
    [Authorize(Roles = "Administrator")]
    آخه من Role هام 3ابت نیست و مدیر سیستم می تونه Role های مختلفی رو خودش تعریف می کنه و هر کدوم از Role ها هم سطح دسترسی های خودشونو دارن.
    با این وضعیت اگه از Authorize استفاده کنم مشکلی ایجاد نمی شه؟

  9. #9

    نقل قول: session

    درسته که null هست ولی تا جایی که من یادمه بعد از بارگذاری view مقدار دهی میشه و این عملیات قبل از بارگذاری Action صورت میگیره.

  10. #10

    نقل قول: session

    نقل قول نوشته شده توسط resident مشاهده تاپیک
    آخه من Role هام 3ابت نیست و مدیر سیستم می تونه Role های مختلفی رو خودش تعریف می کنه و هر کدوم از Role ها هم سطح دسترسی های خودشونو دارن.
    با این وضعیت اگه از Authorize استفاده کنم مشکلی ایجاد نمی شه؟
    در اینصورت نمی تونید از Authorize استفاده کنید.

    هر چند کار شما هم زیاد جالب نیست.
    مدیر بایستی بتونه طبق Roleهای تعریف شده در سیستم (توسط برنامه نویس) به کاربران Roleهایی اختصاص بده. مثلا به کاربری 3نوع Role بده و به کاربری یک نوع والی آخر. برنامه نویس هم طبق (تحلیل های انجام شده) این Roleها رو استفاده می کنه.

  11. #11

    نقل قول: session

    نه.من فکر میکنم اینکه مدیر بتونه Role ها رو ایجاد کنه بهتر باشه.بنظر من اون چیزی که باید از قبل وجود داشته باشه و غیر قابل ایجاد باشه مثلا UserType هستش که میتونه یه enum از 4 5 نوع یوزر باشه مثل Admin , Super Admin,...
    شما یه کلاس CustomAuthentication درست کنید و داخلش url درخواست شده رو به کنترلر و اکشنش بشکونید و برید ببینید کاربری با این UserType به این کنترلر و اکشن دسترسی داره یا نه(جدولای دیتابیسش رو تحلیل کنید خودتون).اگه داشته جواب true بده اگه نه false.
    بعد اونوقت می تونید با اتریبوتای زیر کاربرای خودتون رو بررسی کنید که آیا با این صفحه دسترسی دارن یا نه.البته خیلی خلاصه گفتم ولی کلا سناریوی کار اینه.حالا سعی کنید تحلیلش کنید اگه سوالی داشتید خوشحال میشم بتونم جواب بدم.

    [Authorize]
    [CustomAuthentication]

    اما در مورد اولین پست شما من از یه تابع استاتیک استفاده میکنم که همون User.Identity.Name رو بهش میدم و کاربر رو برمی گردونه و هر کاری بخوام میتونم انجام بدم باهاش.

  12. #12

    نقل قول: session

    طبق فرمایش شما کارهای زیر رو انجام دادم:


    اول تعریف این کلاس:

    public static class CustomAuthentication
    {
    public static bool GetAuthenticationForm(ControllerContext controllerContext)
    {
    string controllerName = controllerContext.RouteData.Values["Controller"].ToString();
    string actionName = controllerContext.RouteData.Values["Action"].ToString();
    اینجا هم دسترسی ها چک میشه.... ما فرض کردیم اجازه داره
    return true;
    }

    }

    بعد اومدم توی اکشن Create نوشتم:
      [Authorize]
    [CustomAuthentication]
    public ActionResult Create()
    {
    CustomAuthentication.GetAuthenticationForm(Control lerContext);
    return View();
    }

    اینجای کارم یه مشکلی داره ولی نمیدونم چیه. 2 مورد:
    1-آیا باید CustomAuthentication.GetAuthenticationForm(ControllerContext);رو داخل هر اکشن صدا کنم؟ به نظر خودم نباید اینطور باشه ولی نمیدونم درستش چیه...
    2- روی خط پایینی Authorizeیعنی CustomAuthenticationارر زیر رو میده:
    MyApp.MVC.Class.CustomAuthentication' is not an attribute class

    ممنون از راهنمایی هاتون
    آخرین ویرایش به وسیله resident : چهارشنبه 30 مرداد 1392 در 10:06 صبح

  13. #13

    نقل قول: session

    سلام.
    بله کاملا درست دارید انجامش میدید فقط چند تا مورد:
    در مورد سوال اولتون اینکه، خب اگه بخواید می تونید تو کل کنترلر خودتون این Authentication رو انجام بدید.فقط کافیه اون 2 تا اتربیوت رو ببرید بالا.مثل زیر:

    [Authorize]
    [CustomAuthentication]
    public class YourController : Controller
    {
    ...
    }

    در مورد سوال دومتون اینکه ارورش درسته.چونکه کلاس CustomAuthentication شما باید از AuthorizeAttribute ارث ببره.اینطوری:

    public class CustomAuthentication : AuthorizeAttribute
    {
    ...
    }


    پس حالا با انجام کارای بالا یه مورد دیگه رو هم باید رعایت کنید.وقتی ارث بری بالا انجام شد دیگه کنترلر و اکشن جدا ورودی مناسبی برای کلاس CustomAuthentication نیست.اینطوری کنیدش:

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
    اینجا دسترسی رو چک کنید و نتیجه ی true یا false رو برگردونید.
    }

    باز تو هر جای کار به مشکل برخوردید من در خدمتم.

  14. #14

    نقل قول: session

    younesdoost جان کارهایی که شما گفته بودید رو انجام دادم.وقتی برنامه رو اجرا می کنم مثلا وقتی میخوام فرم City رو باز کنم بعد از AuthorizeCore (وقتی True برمیگردونه) همچین Url ای رو میخواد اجرا کنه که خب نمیتونه...!!!!!

    http://localhost:3641/Login/Index?ReturnUrl=%2fCity%2f

    چکار باید کرد؟

  15. #15

    نقل قول: session

    یه همچین متدی توی همون کلاس CustomAthentication ایجاد کنید:

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "action", "NotAuthorized" }, { "controller", "Account" } });
    }

    و تو کنترلر Account:

    [Authorize]
    public string NotAuthorized()
    {
    return "You don't have access to this part.";
    }

    یه مورد دیگه هم اینکه اروری که شما میگید یکم به نظرم غیر منطقی میاد.
    چونکه شما تو AuthorieCore وقتی می خواید چک کنید دسترسی رو UserId کاربر فعلی رو می فرستید و دسترسی رو می خونید.وقتی کاربر لاگین کرده چطور بر می گرده به صفحه ی لاگین؟
    من تو دیتابیس 3 تا جدول دارم.User,UserRole,Role
    جدول یوزر دارای یک UserTypeId هستش.
    جدول UserRole برای هر UserTypeId یک(یا بیشتر از یک) RoleId داره و یه فیلد Access که می تونه True و False باشه.
    جدول Role هم دارای یه فیلد Controller و Action هستش.
    حالا تو AuthorizeCore من با استفاده از نام Controller و Action همونجا Role مربوط به این دو رو می خونم.بعد UserTypeId کاربر فعلی و RoleId رو میفرستم که ببینم بهم یه UserRole بر می گردونه یا نه.اگه برگردوند میبینم Access چی هست.true یا false.

  16. #16

    نقل قول: session

    younesdoostجان مشکل رو پیدا کردم....به جای

    [Authorize]
    [CustomAuthentication]

    باید فقط

    [CustomAuthentication]

    بذاریم
    ازتون واقعا ممنونم. خیلی کمکم کردید

  17. #17

    نقل قول: session

    خواهش می کنم دوست من.البته من هر دو تا اتربیوتو میذارما.اگه با برداشتن اون مشکل حل شده شاید یه جای دیگه ی کار ایراد داره(web.config رو چک کنید).
    ولی بهرحال این روش پسندیده ای هستش برای Custom Authentication.خوشحالم تونستم کمک کنم.

  18. #18

    نقل قول: session

    تو web.config چی رو چک کنم؟

  19. #19

    نقل قول: session

    نگاه کنید ببینید آیا کد بازگشت به صفحه ی لاگینتون(تگ authentication) با آدرس Routing لاگینتون برابره؟یعنی اینطوریه:

    <authentication mode="Forms">
    <forms loginUrl="~/Login/Index" timeout="2880" />
    </authentication>

  20. #20

    نقل قول: session

    بله درسته

    اینطوره:

    <authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>

    در کنترلر Account اکشن login رو دارم برای ورود به سیستم.

  21. #21
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1387
    پست
    77

    نقل قول: session

    نقل قول نوشته شده توسط resident مشاهده تاپیک
    younesdoostجان مشکل رو پیدا کردم....به جای

    [Authorize]
    [CustomAuthentication]

    باید فقط

    [CustomAuthentication]

    بذاریم
    ازتون واقعا ممنونم. خیلی کمکم کردید
    از دید بنده هم [CustomAuthentication] کافی هست بخاطره اینکه وقتی این مورد رو کاربر داره که لوگین کرده باشه سطح دسترشیش رو گرفته باشه

  22. #22

    نقل قول: session

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

  23. #23
    کاربر دائمی آواتار sunn789
    تاریخ عضویت
    دی 1384
    محل زندگی
    در حال حاضر کره زمین
    پست
    801

    نقل قول: session

    نقل قول نوشته شده توسط ali_autumnal مشاهده تاپیک
    اصلا نیازی به session ندارید session واسه asp قدیم هست. نه واسه MVC

    شما UserName از var My = User.Identity بخونید و به مراتب با استفاده از UserName ، از UserProfile
    UserId بخونید

    یا UserId که با اول از UserProfie خوندید رو توسط TempData به Action های دیگه پاس بدید
    سلام
    من یه جایی گیر کردم اینه که زمانی یه کاربر نام کاربری و کلمه عبور رو وارد میکنه در کنترل MVC به چه نحو User رو پر میکنه ، شما فرمودین از سشن دیگه استفاده نمیکنه خوب چه جوری User رو پر کنم
    ممنون میشم

  24. #24

    نقل قول: session

    User توسط asp بصورت خودکار پرمیشه!
    شما در اکشن فقط کافیه دستور var My = User.Identity بنویسید.

تاپیک های مشابه

  1. درباره Session کمک می خواستم لطفا"
    نوشته شده توسط taghavi در بخش PHP
    پاسخ: 5
    آخرین پست: پنج شنبه 13 خرداد 1389, 17:54 عصر
  2. session counter
    نوشته شده توسط tazekar در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 01 مهر 1382, 11:04 صبح
  3. Sessions & New Window !
    نوشته شده توسط Farhad.B.S در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: دوشنبه 31 شهریور 1382, 19:40 عصر
  4. SESSION.ABANDON
    نوشته شده توسط Mahdi Fahmideh در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 16 شهریور 1382, 21:08 عصر
  5. مشکل در session
    نوشته شده توسط Mahdavi در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: یک شنبه 12 مرداد 1382, 01:08 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •