Wicket में, मुझे भूमिकाओं के आधार पर पहुंच को प्रतिबंधित करने के लिए @AuthorizeInstantiation का उपयोग करना होगा। अन्यथा सभी को प्रवेश की अनुमति है।

मुझे उल्टा व्यवहार चाहिए: डिफ़ॉल्ट रूप से सभी पृष्ठों को प्रतिबंधित करें (केवल तभी अनुमति दें जब @AuthorizeInstantiation निर्दिष्ट हो)

उसको कैसे करे?

1
aswath 22 फरवरी 2018, 18:20

2 जवाब

इस समय आप भूमिकाएं प्राधिकरण रणनीति का उपयोग करते हैं जो AnnotationsRoleAuthorizationStrategy को दर्शाती है। इसका code कहता है:

@Override
public <T extends IRequestableComponent> boolean isInstantiationAuthorized(
    final Class<T> componentClass)
{
    // We are authorized unless we are found not to be
    boolean authorized = true;
    ...

फिलहाल मुझे एक कस्टम IAuthorizationStrategy बनाने के अलावा और कोई रास्ता नहीं दिख रहा है जो authorized = false से शुरू होता है और फिर वही करता है।

आप इस प्रारंभिक मान को एक सदस्य फ़ील्ड बनाने के लिए Wicket JIRA पर एक टिकट बना सकते हैं जिसे एक कंस्ट्रक्टर पैरामीटर से आरंभ किया गया है। इस तरह आपको कोड कॉपी करने की आवश्यकता नहीं होगी और यह new AnnotationsRoleAuthorizationStrategy(false) जितना आसान होगा

2
martin-g 22 फरवरी 2018, 18:45
हां, लेकिन कृपया boolean का उपयोग न करें, बल्कि एक enum का उपयोग करें जो सीधे दिखाता है कि क्या हो रहा है। उदाहरण के लिए DefaultAuthoriziation.ALLOW, DefaultAuthoriziation.DENY। इससे कोड को पढ़ना बहुत आसान हो जाता है।
 – 
RobAu
23 फरवरी 2018, 16:06

आप क्या कर सकते हैं पैकेज स्तर पर @AuthorizeInstantiation निर्दिष्ट करें।

package-info.java:

@AuthorizeInstantiation("ADMIN")
package your_domain.your_app.your_package;

import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;

हालांकि यह सब-पैकेज पर लागू नहीं होता है।

0
Janux 30 मार्च 2018, 13:30