2009-02-12 13 views
8

मैं कुछ कोड देख रहा हूं जो उन्हें संग्रहीत करने से पहले उपयोगकर्ता नाम को कम मामले में परिवर्तित कर देता है। मुझे 9 0% यकीन है कि यह ठीक है, लेकिन वहां ऐसे सिस्टम हैं जिनके लिए वास्तव में उपयोगकर्ता नामों (विशेष रूप से स्वास्थ्य उद्योग में) पर केस संवेदनशीलता की आवश्यकता होती है?क्या उपयोगकर्ता नाम कभी भी संवेदनशील हैं?

नोट: मेरा विशेष कोड प्रवेश के बिंदु पर नहीं है। हम अन्य सिस्टम से उपयोगकर्ता नाम ले रहे हैं। मेरे पास चिंता उन प्रणालियों (जो हमारे नियंत्रण में हो सकती है या नहीं भी हो सकती है) पर निर्भर करती है ताकि हम लगातार एक ही मामले में उपयोगकर्ता नामों को पास कर सकें (एक ही उपयोगकर्ता का वर्णन करते समय)।

भी ध्यान रखने की

- कोड है:

userName.toLowerCase(Locale.ENGLISH) 

अंग्रेजी में सभी उपयोगकर्ताओं के नाम हैं? क्या यह सिर्फ डेटाबेस में संयोजन से मेल खाता है? ध्यान दें कि (जावा में कम से कम) String.toLowerCase() अपने एकमात्र लक्ष्य एक-दूसरे उपयोगकर्ता फर्क है, तो के रूप में String.toLowerCase(Locale.getDefault())

उत्तर

0

परिभाषित किया गया है, यह तार्किक लगता है कि तुम एक कारक के रूप में मामले की तुलना में अधिक चाहते हैं।

21

यूनिक्स लॉगिन केस संवेदी होते हैं ...

क्या कोई अन्य प्रणाली है कि ऐसा करने के हैं?

+1

कोई मुझे बता सकते क्यों यह downvoted हो रही है है? यह मेरे मामले में एक विशिष्ट जवाब नहीं है, लेकिन मैंने सोचा होगा कि यह दूसरों के लिए उपयोगी होगा। क्या देता है? – Stephen

+2

नीचे-वोट से नफरत ड्राइव। अफसोस की बात है, वे होते हैं। –

+0

ठीक है, यह वास्तव में जवाब दिया गया था कि क्या जवाब दिया गया था। यह एक ऐसे मामले को इंगित करता है जहां उपयोगकर्ता नाम केस संवेदनशील होते हैं। मैंने इसे ऊपर उठाया। –

0

मैं एक प्रणाली है कि लागू किया उपयोगकर्ता नाम पर मामले संवेदनशीलता सामना करना पड़ा कभी नहीं (और न ही मैं चाहता हूँ)।

संभवतः कोड कोड-संवेदनशीलता समस्याओं को रोकने के प्रयास के रूप में प्रवेश के बिंदु पर उन्हें लोअरकेस को मजबूर करता है।

+0

मैंने यह ध्यान देने के लिए संपादित किया है कि हमारी प्रणाली पहुंच प्रदान करने वाला नहीं है। – Stephen

+0

'विकिपीडिया उपयोगकर्ता नाम केस संवेदी होते हैं, लेकिन पहले अक्षर हमेशा स्वचालित रूप से capitalized' https://en.wikipedia.org/wiki/Wikipedia:Username_policy – Jakob

+0

से लिया विकिमीडिया/विकिपीडिया/मीडियाविकि उपयोगकर्ता नाम केस संवेदी होते हैं, वहीं सॉफ्टवेयर रोकता है दो उपयोगकर्ता नाम जो केवल पूंजीकरण से भिन्न होते हैं। –

2

उपयोगकर्ता नाम Lowercasing अंग्रेजी स्थान का उपयोग कर आप समस्याओं के कारण के लिए बाध्य है। मैं invariant संस्कृति का उपयोग कर लोअरकेसिंग का सुझाव दूंगा।

छोटे अक्षर के बाद से मैं हर मानक भाषा में डॉट है, पत्र मैं एक बिंदु के साथ एक मैं करने के लिए तब्दील हो जाता है:

+0

जावा में, यह Locale.ROOT – Stephen

+0

.NET में Invariant संस्कृति वैसे भी अंग्रेजी लोकेल है। – Joshua

+3

@ जोशुआ - यह एक आंतरिक कार्यान्वयन विवरण है जिस पर आपको भरोसा नहीं करना चाहिए। –

6

toLowerCase केवल एक ही कारण है कि यह एक स्थान को स्वीकार करने के लिए है।

लेकिन तुर्की में, वहाँ भी ऊपर एक बिंदु के साथ बड़े अक्षर मैं। यह एक छोटे अक्षर में बदल गया है i।

"नियमित" तुर्की राजधानी I को एक छोटे से transform के बिना बदल दिया गया है - बिना डॉट के।

इसलिए, जब तक कि आपके तुर्की उपयोगकर्ता नाम सभी को IiI1I1iiII कहा जाता है, मैं शायद इसके बारे में चिंता नहीं करता।

तुर्की की तुलना में हर दूसरी भाषा में समान रूप से लोअरकेस कार्यान्वयन है। तो आप Locale.ENGLISH या Locale.GERMAN या जो कुछ भी चुन सकते हैं .. सुनिश्चित करें कि आप तुर्की नहीं चुनते हैं।

देख javadoc for more detailed information

संपादित करें: Karatas Utku करने के लिए धन्यवाद मैं/कॉपी चौथाई पोस्ट में सही ग्लिफ़ पेस्ट कर सकते हैं।

+0

तुर्की के साथ कोई समस्या है? वैसे भी आलसी होने का कोई कारण नहीं है, एक परिवर्तनीय लोकेल का उपयोग करते समय कुछ मिलियन संभावित उपयोगकर्ताओं का समर्थन करने के लिए आवश्यक सभी काम हैं। –

+1

कोई तुर्की कीबोर्ड एंड्रियास? :) मुझे इस मुद्दे को स्पष्ट करने दें ... निचला ("मैं") = "ı", निचला ("İ") -> "मैं"। –

+0

और बीटीडब्ल्यू जेफ इस मुद्दे के बारे में एक लंबी पोस्ट है .. http://www.codinghorror.com/blog/archives/001075.html –

0

यह संदर्भ पर निर्भर करता है, लेकिन SQL की इन्फोर्मिक्स बोली में, वहाँ 'मालिकों' (मूल रूप से मानक SQL में एक स्कीमा के बराबर) हैं, और आप मालिक का नाम मामलों कैसे लिखें।

SELECT * 
    FROM someone.sometable, "someone".sometable, 
     SOMEONE.sometable, "SOMEONE".sometable 

दो उद्धृत नाम निश्चित रूप से अलग हैं; दो unquote नाम एक ही नाम पर मैप किए जाते हैं, जो (डेटाबेस मोड के आधार पर) अन्य दो में से एक हो सकता है। यहां कुछ कोड है जो (unquoted) नामों पर केस-रूपांतरण करता है। सौभाग्य से, अधिकांश समय आपको नाम निर्दिष्ट करने की आवश्यकता नहीं होती है, और जब आप उद्धरण के बिना नाम लिखते हैं और यह सब काम करता है; या आप उद्धरण के साथ नाम लिखते हैं और लगातार होते हैं और यह सब काम करता है। कभी-कभी, हालांकि, मेरे जैसे लोगों को सभी हुप्स के बावजूद कार्यक्रमों को अच्छी तरह से काम करने के लिए विवरणों को वास्तव में समझना है।

इसके अलावा, (स्टीफन नोट) यूनिक्स लॉगिन केस-संवेदी होते हैं, और हमेशा किया गया है। मेरा मानना ​​है कि विंडोज लॉग इन ज्यादातर केस-असंवेदनशील हैं - लेकिन मैं इसके साथ प्रयोग नहीं करता हूं (गेम पर उस तरह की चालबाजी को जोड़ने के बिना विंडोज़ पर खराब होने के कई तरीके हैं)।

तुम सच में यूनिक्स पर किसी को भ्रमित, उन्हें एक अंकीय उपयोगकर्ता नाम (जैसे 123) दे लेकिन उन्हें एक अलग यूआईडी (जैसे 234) देना चाहते हैं।

1

करबरोस, जो Windows में इस्तेमाल किया जा सकता भी वातावरण, केस संवेदनशीलता समस्या है। आप इसे सुनिश्चित करने के लिए एक निश्चित तरीके से कॉन्फ़िगर कर सकते हैं कि केस संवेदनशीलता के मुद्दे उत्पन्न नहीं होंगे, लेकिन यह दूसरी तरफ भी जा सकता है।

3

केस संवेदी उपयोगकर्ता नाम/पासवर्ड का उपयोग करना सुरक्षा बढ़ाने के लिए एक आसान तरीका है, इसलिए सवाल है, आप कितना सुरक्षा प्रयोज्य बनाम के बारे में परवाह है। बस ध्यान रखें कि जिस तरह से आप केस असंवेदनशीलता को हल करने के लिए देख रहे हैं, उनमें कुछ स्थानीयकरण समस्याएं हो सकती हैं, लेकिन यदि आपको परवाह नहीं है तो इसके बारे में चिंता न करें।

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