50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

Application_AuthorizeRequest در mvc.core

سلام

معادل 

protected void Application_AuthorizeRequest()
{}
در mvc.core چیست
پرسیده شده در 1399/05/02 توسط

13 پاسخ

1

سلام

مهندس من کد شمارا در قسمت اخر یک تغییری ایجاد کردم و جواب داد 

public async Task<IActionResult> Index()
  {
   var username = "Admin";
   var roles = new[] { "role1", "role2" };
   var rememberMe = true;
   var claims = new List<Claim>
   {
    new Claim(ClaimTypes.Name, username)
   };


   var a = new Claim(ClaimTypes.Name, username);

   foreach (var role in roles)
   {
    claims.Add(new Claim(ClaimTypes.Role, role));
   }
   var claimsIdentity = new ClaimsIdentity(claims, "My");
   var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
   await HttpContext.SignInAsync(claimsPrincipal);
   return View();
  }

پاسخ در 1399/05/08 توسط
1

کد بالا رو اصلاح کردم، جایگزین کنید.

پاسخ در 1399/05/08 توسط
0

سلام
وسپاس بابت وقتی که قرار میدهید برای سوالات 
من کدهای زیر را نوشته ام

app.UseAuthentication();
app.UseAuthorization();  
public class UserSystemProfile
    {
     public static string Name = Empty;
     public static string[] Roles = null;
    }

public IActionResult Index()
  {
   UserSystemProfile.Name = "1";
   UserSystemProfile.Roles = dbContext.User_Role.Where(r=>r.UserId==1).Select(c => c.RoleId.ToString()).ToArray();
   //جوابهای 1و2 را برمیگرداند
   return View();
  }
  
public IActionResult Test()
  {
   var a = User.IsInRole("1");
   //بجای جواب 
   //true
   //جواب 
   //false
   //را برمیگرداند
   return View();
  }

اما جواب false  را برمیگرداند نه true 
کجا کدم مشکل دارد

پاسخ در 1399/05/06 توسط
0

سلام

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

پاسخ در 1399/05/06 توسط
0

سلام
من برای تست این صفحه را ساختم

public IActionResult Index()
  {
   UserSystemProfile.Name = "1";
   UserSystemProfile.Roles = dbContext.User_Role.Where(r=>r.UserId==1).Select(c => c.RoleId.ToString()).ToArray();
   //جوابهای 1و2 را برمیگرداند
   return View();
  }

 

معادل همان لاگین هست

که عدد 1 نام کاربری است و نقشها هم 1و2  هستند برای کاربر1
لطف میکنید بفرمایید باید چه کدی اضافه کنم

پاسخ در 1399/05/06 توسط
0

سلام
این کدها یکی هستند منظورتان آیا کد دیگری هم هست یا همین یک کد کفایت میکند

app.UseAuthentication();

app.UseAuthorization();
پاسخ در 1399/05/06 توسط
1

شما متد رو async تعریف نکردید و نمیتونید داخلش از await استفاده کنید. نکته بعد اینکه بخش Constants.AuthenticationSchema هم تو کد باید تعریف بشه، کد بالا رو تغییر دادم جایگزین کنید. متد رو هم به صورت async تعریف کنید. برای آشنایی بهتر از فیلم های مربوط در آموزش سی شارپ استفاده کنید.

پاسخ در 1399/05/07 توسط
0

سلام

مهندش

var claims = new List
{
 new Claim(ClaimTypes.Name, username)
};

 

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

Using the generic type 'List<T>' requires 1 type arguments 

پاسخ در 1399/05/08 توسط
1

من دقیقاً نمیدونم شما این کد رو از کجا آوردید، چون تو هیچ مستنداتی همچین کدی رو ندیدم! کد زیر یک نمونه ساده برای ورود به سایت هست:

var username = "Admin";
var roles = new[]{ "role1", "role2" };
var rememberMe = true;
var claims = new List<Claim>{
 new Claim(ClaimTypes.Name, username)
};

foreach (var role in roles)
{
 claims.Add(new Claim(ClaimTypes.Role, role));
}

var claimsIdentity = new ClaimsIdentity(claims, "MySchema");
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
await HttpContext.SignInAsync("MySchema", claimsPrincipal, new AuthenticationProperties
{
 IsPersistent = rememberMe
});
پاسخ در 1399/05/06 توسط
0

سلام
من  می خواهم سطح دسترسی را خودم بنویسم البته در mvc.net این کار را کرده بودم
اما در mvc.core معادل کد زیر را نمی دانم کجا بنویسم


 protected void Application_AuthorizeRequest()
  {
   

   if (UserSystemProfile.name != String.Empty)
   {
    GenericIdentity userIdentity = new GenericIdentity(UserSystemProfile.name);
    Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(UserSystemProfile.name), UserSystemProfile.roles);
    HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(UserSystemProfile.name), UserSystemProfile.roles);
   }
  }
پاسخ در 1399/05/04 توسط
1

سلام، وقت بخیر

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

پاسخ در 1399/05/04 توسط
1

شما عملیات های مربوط به ورود و خروج کاربر رو پیاده سازی نکردید! تو سایت باید قسمتی برای Signin داشته باشید که عملیات ورود کاربر انجام بشه و Role ها Assign بشه، بعد بتونید سطوح دسترسی رو چک کنید. داخل مستندات مایکروسافت یکبار بخش مربوط به امنیت رو مطالعه کنید.

پاسخ در 1399/05/06 توسط
1

شما داخل ASP.NET Core باید تو فایل Startup.cs تنظیمات مربوطه رو انجام بدید. کافیه تو متد Configure کدهای زیر رو اضافه کنید:

app.UseAuthentication();

app.UseAuthorization();

این کدها باعث میشه روند شناسایی کاربر لاگین شده توسط ASP.NET Core انجام بشه. بقیه موارد مثل ASP.NET هست، شما از خصوصیت User تو Controller ها و View ها می تونید استفاده کنید، همچنین از AuthorizeAttribute روی Action ها یا Controller ها برای کنترل سطح دسترسی می تونید استفاده کنید. اگر اطلاعات بیشتری نیاز دارید این لینک رو مطالعه کنید.

پاسخ در 1399/05/05 توسط

پاسخ شما