আমি একটি বহু-ভাড়াটে ওয়েবসাইট তৈরি করছি যা ক্লায়েন্টদের জন্য পৃষ্ঠাগুলি হোস্ট করে। ইউআরএলটির প্রথম বিভাগটি এমন একটি স্ট্রিং হবে যা ক্লায়েন্টকে চিহ্নিত করে, নিম্নলিখিত ইউআরএল রাউটিং স্কিমটি ব্যবহার করে গ্লোবাল.অ্যাসাক্সে সংজ্ঞায়িত:
"{client}/{controller}/{action}/{id}"
এটি URL / যেমন / foo / হোম / সূচক হিসাবে ভাল কাজ করে।
তবে, [অনুমোদিত] বৈশিষ্ট্যটি ব্যবহার করার সময়, আমি লগইন পৃষ্ঠায় পুনর্নির্দেশ করতে চাই যা একই ম্যাপিং স্কিমটিও ব্যবহার করে। সুতরাং ক্লায়েন্ট যদি foo হয় তবে লগইন পৃষ্ঠাটি ওয়েব / কনফিগে সংজ্ঞায়িত / অ্যাকাউন্ট / লগইন পুনর্নির্দেশের পরিবর্তে / foo / অ্যাকাউন্ট / লগইন হবে।
এমভিসি একটি 401 অননুমোদিত স্থিতি ফিরিয়ে আনতে একটি HTTPUnauthorisedResult ব্যবহার করে, যা আমি অনুমান করি যে এএসপি.এনইটি ওয়েবকনফিগে সংজ্ঞায়িত পৃষ্ঠায় পুনর্নির্দেশের কারণ ঘটায়।
সুতরাং কেউ কীভাবে এএসপি.নেট লগইন আচরণের পুনর্নির্দেশের আচরণটি ওভাররাইড করবেন তা জানেন? অথবা কাস্টম অনুমোদনের বৈশিষ্ট্য তৈরি করে এমভিসিতে পুনঃনির্দেশ করা ভাল?
সম্পাদনা - উত্তর:। নেট উত্সে কিছু খননের পরে, আমি সিদ্ধান্ত নিয়েছি যে একটি কাস্টম প্রমাণীকরণ বৈশিষ্ট্যই সেরা সমাধান:
public class ClientAuthorizeAttribute: AuthorizeAttribute
{
public override void OnAuthorization( AuthorizationContext filterContext )
{
base.OnAuthorization( filterContext );
if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult )
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "client", filterContext.RouteData.Values[ "client" ] },
{ "controller", "Account" },
{ "action", "Login" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}