ورود

View Full Version : سوال: Authorize کردن یک Action



ArtStyle
شنبه 22 فروردین 1394, 02:28 صبح
سلام
وقت دوستان بخیر

سوالی داشتم در مورد Authorize کردن در کدام قسمت باید User یا Role جدید ایجاد کرد

مثلا در کد زیر کجا باید یوزر Ali تعریف شود


[Authorize(Users="Ali")]
public ActionResult Index()

niloo17
شنبه 22 فروردین 1394, 08:11 صبح
اگه منظورتون روش ایجاد یوزر جدید است .



WebSecurity.CreateUserAndAccount("admin", "123456", new
{
IsLocked = false,
CreateDateTime = DateTime.Now // پارامترهایی که برای کاربر در نظر گرفته اید .
});

if (!System.Web.Security.Roles.GetAllRoles().Contains ("Admin"))
{
System.Web.Security.Roles.CreateRole("Admin");
}

if (!System.Web.Security.Roles.IsUserInRole("admin", "Admin"))
System.Web.Security.Roles.AddUserToRole("admin", "Admin");

ArtStyle
شنبه 22 فروردین 1394, 11:49 صبح
اینو باید تو کدوم قسمت وارد کرد ؟

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

niloo17
شنبه 22 فروردین 1394, 12:52 عصر
اگر یوزر مورد نظر یوزر ثابتی است و می خواین که همیشه داشته باشید می تونید در فایل Global برنامه اضافه کنید.

ArtStyle
شنبه 22 فروردین 1394, 15:31 عصر
میشه یکم بیشتر راهنمایی کنید برام خیلی مبهمه

من الان یوزر رو ساختم ولی چجور باید ازش استفاده کنم یعنی چجور این یوزرو به شخصی نسبت بدم ؟

آیا باید اینارو در Session اضافه کنم ؟

niloo17
یک شنبه 23 فروردین 1394, 07:54 صبح
منظورتون متوجه نشدم. ولی در کل
1. یوزر ها خودشون در سایت ثبت نام می کنند و شما نباید یوزر هاتونو ثبت کنید .
2. برای دادن دسترسی به یوزرهای خاص یهتره که از role ها استفاده کنید .
شما برای سایتتون roleهای مورد نظرتون اضافه می کنید و هنگامی که کاربران در سایت ثبت نام می کنند role مورد نظر را بهشون نسبت می دهید. و در actionها به جای اینکه action را به یوزر نسبت بدید به role مورد نظر نسبت میدید.

ArtStyle
پنج شنبه 27 فروردین 1394, 00:17 صبح
ممنون از وقتی که میذارین

من دو روز کامل در این باره سرچ کردم ولی به هیچ نتیجه ای نمیرسم . میشه یکم از پایه توضیح بدین که اصلا چجور باید یوزر رو تعریف کرد و به شخصی اختصاص داد

مثلا من در قسمت Seed ادمینم رو داخل دیتابیس تعریف کردم و در هنگام لوگین از Session استفاده کردم و در هر کنترلر بررسی کردم اگر سشن مورد نظر موجود نباشه به صفحه لوگین بره

حال میخوام بدونم در websecurity یک Role رو چجور باید به یوزری که داخل دیتابیسمه اختصاص بدم . به نظرتون از همون سشن استفاده کنم یا به خاطر کلاسیک بودنش کنار بذارمش ؟

هر کی تو این زمینه مهارت داره ممنون میشم به شاگردایی چون من کمکی کنه

niksoft
شنبه 29 فروردین 1394, 23:07 عصر
دوست عزیز برای استفاده از ممبرشیپ در دات نت احتیاجی به استفاده از سشن وجود ندارد ..
شما میتونی یک رول تعریف کنی و در خط بالای کلاس کنترلر تگ مذکور رو بنویسی ..




[Authorize(Roles = "Admin")]
public class HomeController
{ }


در این حالت کلیه ActionResult ها در کنترلر شما فقط زمانی اجرا میشوند که کاربر وارد شده در سیستم در رول Admin باشد ...
در ضمن برای لاگین کردن یوزر شما کافی است کد زیر را اجرا کنید و لزومی به استفاده از سشن نیست ..



FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);




در این صورت ActionResult کامل آن به صورت ذیل میشود :



[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{


FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
}
else
{
ModelState.AddModelError("", "نام کاربری یا رمز عبور اشتباه میباشد .");
}


}




return View();
}


همچنین برای ساخت کاربر و رول جدید میتوانید از منوی Visual Studio استفاده کنید



Project ==> Asp.net configuration

alireza_rashvand
یک شنبه 30 فروردین 1394, 18:00 عصر
این تاپیک:
اضافه کردن Identity 2.0 (http://barnamenevis.org/showthread.php?471502-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-Identity-2-0)

و ادامه ان :
Role در MVC (http://barnamenevis.org/showthread.php?483438-Role-%D8%AF%D8%B1-MVC)

رو دنبال کنید

نیاز نیست از سیشن استفاده کنید.

ArtStyle
سه شنبه 01 اردیبهشت 1394, 14:44 عصر
دست گلتون درد نکنه واقعا چقد سر این موضوع سرچ کردم ولی به نتیجه نرسیدم و تقریبا بیخیال شده بودم اما الان به لطف دوستان بزرگواری چون شما مشکلم حل شد