2011-08-07 18 views
8

ReturnUrl बदसूरत है। मैं इसके बजाय redirect का उपयोग करना चाहता हूं। मैं पैरामीटर का नाम कैसे निर्दिष्ट कर सकता हूं जिसका उपयोग फॉर्म प्रमाणीकरण के लिए [Authorize] विशेषता के साथ यूआरएल रीडायरेक्ट करने के लिए किया जाना चाहिए? या क्या मुझे एक IAuthorizationFilter कार्यान्वयन बनाना है? :(मैं एएसपी.नेट एमवीसी द्वारा उपयोग किए गए "रिटर्न यूआरएल" पैरामीटर का नाम कैसे बदल सकता हूं?

उदाहरण:

[Authorize] 
public class Tools : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

वाले किसी उपयोगकर्ता द्वारा दौरा http://example.com/tools प्रवेश न होने पर, मैं उन्हें चाहते हैं जब/खाते के लिए डिफ़ॉल्ट http://example.com/Account/LogOn?ReturnUrl=%2ftools

के बजाय, http://example.com/account/logon?redirect=%2ftools पर पुनः निर्देशित किया करने के लिए/logon हिस्सा है, मैं Global.asax में मेरे मार्गों को संशोधित करने और web.config में बदल

<authentication mode="Forms"> 
    <forms loginUrl="~/account/logon" timeout="2880" /> 
</authentication> 

कर सकते हैं। लेकिन मैं नहीं जानता कि Ret बदलने का तरीका urnUrl पैरामीटर।

+0

मुझे पता है कि मैं इस चर्चा के लिए बहुत देर हो चुकी हूं लेकिन मेरे पास एक ही समस्या है इसलिए मैंने माइक्रोसॉफ्ट के साथ इसके लिए एक वृद्धि अनुरोध पोस्ट किया। http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3049874-make-returnurl-a-configurable-key-name-instead-o इसके लिए वोट करने के लिए स्वतंत्र महसूस करें, उस पर टिप्पणी करें, इत्यादि। पर्याप्त वोटों के साथ यह उनका ध्यान प्राप्त कर सकता है। –

उत्तर

1
नहीं

चारों ओर सबसे अच्छा समाधान है, लेकिन यह काम करता है ...

<rule name="FormsAuthentication" stopProcessing="true"> 
    <match url="^account/log(i|o)n$" /> 
    <conditions> 
    <add input="{QUERY_STRING}" pattern="^ReturnUrl=([^=&amp;]+)$" /> 
    </conditions> 
    <action type="Redirect" url="account/logon?redirect={C:1}" appendQueryString="false" /> 
</rule> 
0

समस्या यह है कि एक रीडायरेक्ट एक पोस्ट नहीं है। यह एक मिलता है। प्राप्त करने के लिए एक चर पारित करने का एकमात्र तरीका किसी प्रकार के क्वेरी स्ट्रिंग पैरामीटर का उपयोग करना है। आप इस यूआरएल को फिर से लिख सकते हैं लेकिन यह अभी भी एक क्वेरी पैरामीटर है, और यूआरएल पर पारित किया गया है।

शायद आप जो खोज रहे हैं उसके बारे में थोड़ा और स्पष्ट हो सकता है?

+0

मुझे यकीन नहीं है कि आप मेरे प्रश्न को समझ चुके हैं ... मैंने एक उदाहरण जोड़ा, उम्मीद है कि जो मैं अधिक स्पष्ट पूछ रहा हूं वह कर दूंगा। –

+0

हां, मुझे अब तुम्हारा क्या मतलब है .. ऐसा लगता है कि श्रृंखला आगे बढ़ती है। जब 401 वापस आ जाता है, तो यह श्रृंखला को पकड़ लिया जाता है और रीडायरेक्ट जारी किया जाता है। मैं इसमें देख रहा हूँ –

0

कॉन्फ़िगरेशन का उपयोग कर पैरामीटर का नाम बदलने का कोई तरीका नहीं है क्योंकि "ReturnUrl" पैरामीटर नाम System.Web.Security.Forms प्रमाणीकरण कक्षा में हार्ड-कोड किया गया है, जो कि क्लास प्रमाणीकरण के लिए उपयोग की जाने वाली कक्षा है, रीडायरेक्ट सहित।

वांछित परिणाम प्राप्त करने का एक तरीका प्राधिकरण विशेषता का विस्तार करना है जैसे कि यह आपके अनुकूलित पैरामीटर नाम के साथ लॉगिन पृष्ठ पर रीडायरेक्ट करता है। फिर आपके द्वारा उपयोग किए जाने वाले फॉर्म प्रमाणीकरण से कौन सी अतिरिक्त विधियों के आधार पर, आप विशेष रूप से FormsAuthentication.RedirectFromLoginPage में भी उनको संशोधित कर सकते हैं।

-1

पैरामीटर नाम बदला नहीं जा सकता है, जो परेशान है। मैंने अपना खुद का प्रमाणीकरण मॉड्यूल लिखकर हल किया - आपको यह जानने की जरूरत है कि प्रमाणीकरण कैसे काम करता है, लेकिन यह मुश्किल नहीं है - बस देखें कि यह परावर्तक में कैसे किया जाता है (और संभवतः इसे सरल बनाते हैं, मैं केवल फॉर्म एक्टिफिकेशन से कुकी एन्क्रिप्टिंग/डिक्रिप्टिंग का उपयोग कर समाप्त हुआ)।

+0

असल में आप बदल सकते हैं, http://msdn.microsoft.com/en-us/library/hh975440.aspx देखें –

10

<add key="aspnet:FormsAuthReturnUrlVar" value="redirect" /> 
-1

बस में अपने web.config में जोड़ने के अपने web.config की appSettings अनुभाग के लिए इस कुंजी जोड़ें कुंजी-मूल्य जोड़ी के बाद ऐप सेटिंग्स अनुभाग:

<add key="aspnet:FormsAuthReturnUrlVar" value="your-custom-parameter-name"/> 
2

प्रश्न और उत्तर यहां से संबंधित हैं ई पुराने फार्म प्रमाणीकरण सामान। एमवीसी के नए संस्करणों पर, उदा। MVC 5 (पहचान 2.0 के साथ), तो आप कुछ इस तरह Startup.Auth.cs में करना होगा:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      LoginPath = new PathString("/account/login"), 
      Provider = new CookieAuthenticationProvider 
      { 
       // Enables the application to validate the security stamp when the user logs in. 
       // This is a security feature which is used when you change a password or add an external login to your account. 
       OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(30), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
      }, 
      ReturnUrlParameter = "redirect" 
     }); 

महत्वपूर्ण हिस्सा (कुछ भी हो सकता है) पाठ्यक्रम ReturnUrlParameter = "redirect" की है। बाकी आपके प्रोजेक्ट के लिए अलग हो सकते हैं।

संबंधित मुद्दे