दिलचस्प पोस्ट
PHP में MCRYPT_RIJNDAEL_256 के साथ एन्क्रिप्ट किए गए पायथन में स्ट्रिंग्स को डिक्रिप्ट करना * ngFor का उपयोग करके वस्तु की कुंजी और मूल्य का उपयोग जावा में यूटीएफ -8 को आईएसओ -8859-1 में परिवर्तित करना – इसे एक बाइट के रूप में कैसे रखना है क्या आप डेस्कटॉप विकास जावास्क्रिप्ट का उपयोग कर सकते हैं? टेबल घटक की मदद से JRBeanCollectionDataSource डेटा कैसे दिखाया जाए? एक <चयन करें> jQuery का उपयोग करने के लिए विकल्प जोड़ना? सी # में ढेर क्षमता एक WHERE खंड में उपनाम का उपयोग करना SQL सर्वर कनेक्शन स्ट्रिंग कैसे सेट करें? जावा प्रॉपर्टी फाइलों का उपयोग कैसे करें? आरजीबी के साथ सीएसएस पृष्ठभूमि की अस्पष्टता IE 8 में काम नहीं कर रहा है एनएसएसटीरिंग ड्रॉ के साथ घुमाए गए पाठ को आकर्षित करना स्विफ्ट 3 पहले पैरामीटर नाम लिनक्स में एक धागा नाम कैसे करें? जब इन्फ्लेटर ApplicationContext के साथ प्रयोग किया जाता है तो थीम / स्टाइल लागू नहीं होती है

लॉगिन के लिए प्रमाणीकरण फ़िल्टर और सर्वलेट

मेरे पास प्रवेश के लिए एक फिल्टर है I यह एक पाठ्य जांच करता है, "उपयोगकर्ता नाम" और "पासवर्ड" फ़ील्ड पर। अगर और केवल अगर शाब्दिक जाँच सही ढंग से किया जाता है, तो अनुरोध Servlet को जाता है यह बाद में नियंत्रण करता है जिसे डेटाबेस से इंटरैक्ट करना होता है। क्या यह चेन सही है?

Solutions Collecting From Web of "लॉगिन के लिए प्रमाणीकरण फ़िल्टर और सर्वलेट"

प्रस्तावना: मैं आपको कंटेनर प्रबंधित लॉगिन के बजाय घर का प्रवेश का उपयोग कर रहा हूं। सभी तरीकों से, डेटाबेस में उपयोगकर्ताओं के साथ प्रमाणीकरण / प्राधिकरण कैसे संभालना है?


फ़िल्टर (इंटरसेप्टर) को उपयोगकर्ता नाम / पासवर्ड कॉम्बो की वैधता की जांच नहीं करनी चाहिए यह सर्वलेट की जिम्मेदारी है (नियंत्रक)।

फ़िल्टर को केवल जांच करना चाहिए कि उपयोगकर्ता लॉग-इन है या नहीं (आमतौर पर सिर्फ सत्र विशेषता की उपस्थिति की जांच करके) और उसके बाद अनुरोध को जारी रखें या फिर लॉगिन पृष्ठ पर पुनः निर्देशित करके उसे ब्लॉक करें।

@WebFilter("/*") public class LoginFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; HttpSession session = request.getSession(false); String loginURI = request.getContextPath() + "/login"; boolean loggedIn = session != null && session.getAttribute("user") != null; boolean loginRequest = request.getRequestURI().equals(loginURI); if (loggedIn || loginRequest) { chain.doFilter(request, response); } else { response.sendRedirect(loginURI); } } // ... } 

सर्वलेट को जमा किए गए डेटा एकत्र करना चाहिए, संबंधित User को डेटाबेस में ढूंढना होगा और यदि पाया गया तो उसे सत्र विशेषता के रूप में संग्रहीत करना होगा और फिर होम पेज पर रीडायरेक्ट करना होगा, अन्यथा सत्यापन त्रुटियों के साथ फ़ॉर्म को फिर से दिखाएं।

 @WebServlet("/login") public class LoginServlet extends HttpServlet { @EJB private UserService userService; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); Map<String, String> messages = new HashMap<String, String>(); if (username == null || username.isEmpty()) { messages.put("username", "Please enter username"); } if (password == null || password.isEmpty()) { messages.put("password", "Please enter password"); } if (messages.isEmpty()) { User user = userService.find(username, password); if (user != null) { request.getSession().setAttribute("user", user); response.sendRedirect(request.getContextPath() + "/home"); return; } else { messages.put("login", "Unknown login, please try again"); } } request.setAttribute("messages", messages); request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); } } 

यह भी देखें:

  • हमारे सर्वोलेट-फिल्टर विकी पृष्ठ
  • हमारे सर्वलेट विकी पृष्ठ