در method ها از Authorize استفاده کردم ، چجوری میشه وقتی AccessDenied?ReturnUrl رو میده به یک page ریدایرکت بشه؟
**********************************************************************
کامل تر:
کد خاصی نیست ببنید قبل متود برای دسترسی
[Authorize(Roles = "sms")]
نوشته شده
همچنین از طریق identity در جدول aspnetrole دسترسی لازم رو به کاربران میدیم
حالا کاربرایی که دسترسی ندارن چنانچه بخوان این اکشن و متود را باز کنن باز نمیشه و در URL لینک
http://localhost:55949/Account/AccessDenied?ReturnUrl=%2Fadmin%2FG_SMS
رو نشون میده
حالا میخوام بجای این یه صفحه نشون بده ( کاربر دسترسی لازم رو ندارد یه همچین چیزی )
لطفا کدهایی کهنوشتید رو قرار بدید. چون اینجوری فقط میشه یه سری کلیات رو گفت و جواب دقیق نمیشه داد اصلا
در کلاس Startup.cs میتونید این موارد رو تعیین کنید.
حالت اول : اگر میخواید در صورت بروز هر گونه خطا کاربر رو به یک مسیر خاص هدایت کنید و درواقع خطاها رو مدیریت کنید می تونید توی متد Configure از دستور زیر استفاده کنید :
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
در کد بالا در کنترلر Home باید یک اکشن به نام Error درست کنید و یک ویو هم به همین نام ایجاد کنید و درون این View متن مورد نظرتون رو در صورت بروز خطا بنویسید. از این ببعد هر خطایی به وجود بیاد این ویو نمایش داده میشه.
حالت دوم : نمایش صفحه 404. اگر کاربر مسیری رو وارد کرد که وجود نداشت باید خطای 404 رو نمایش بدید. برای انجام این کار کد زیر رو در Configure بنویسید :
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404)
{
context.Request.Path = "/home/err404";
await next();
}
});
توی این حالت هم باید در کنترلر Home یک اکشن با نام err404 ایجاد کنید و همچنین یک ویو به همین نام. از این پس هر آدرسی که وجود نداشت درخواست شد صفحه err404 نمایش داده میشه.
حالت سوم : نمایش صفحه AccessDenied
به صورت پیش فرض وقتی کاربر تقاضای دسترسی به صفحه ای رو میکنه که مجاز نیست سیستم اتوماتیک کاربر رو به مسیر Account/AccessDenied میفرسته. شما باید در کنترلر Account یک اکشن به نام AccessDenied ایجاد کنید و یک ویو به همین نام و متن مورد نظرتون رو داخلش بنویسید تا از این پس اون چیزی که شما میخواید نمایش داده بشه.
می تونید هم البته این مسیر رو به صورت پیش فرض تغییر بدید. برای این منظور در متد Configure کد زیر رو بنویسید
app.UseStatusCodePages(async context => {
if (context.HttpContext.Response.StatusCode == 403)
{
// your redirect
}
});
این لینک هم در مورد همین موضوع هست
موفق باشید
تشکر حل شد
روش 2 اجرا میشه همیشه و 3 اجرا نمیشه
خیلی عالی
چجوری حلش کردید ؟ با روش ۲ یا کار دیگه ای انجامدادید ؟
با روش 2 شما مورد حل شد
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
112
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
216
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
112
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|