• 0
ahmadoovic

عمل log in عن طريق jsf

سؤال

مرحبا

 

أبحث عن كود مكتوب بالـ JSF  اقدر عن طريقه عمل log in انه اذا كانت اسم المستخدم وكلمة المرور صحيحة فانه يحولني الى الصفحة المطلوبة

 

هل يعرف احد كيف

تم تعديل بواسطه ahmadoovic
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

13 إجابة على هذا السؤال .

  • 0

المسألة هنا ليست JSF أو غيرها  انما الجهد الحقيقي هو كود الجافا الذي يعمل مقارنة بين اسم المستخدم وكلمة المرور فاذا كانا صحيحين سيمررك للصفحة والا فسيطلب منك التحقق منهما

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هل لديك أخي طريقة الحل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سوف أكتب الكود واقدمه لك قريبا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

http://programming-simplified.com/      دى مجموعه كورسات فى منها مجانى.      سوف تجد ,ejb,jba jsf     مجانى      .   اول ثلاث محاضرات فى  jsf  سيمكنك من عمل ما تطلبه 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

في البداية ننشا صنف جافا ليتحكم بالبيانات التي سيقوم المستخدم باداخالها (اسم المستخدم وكلمة المرور) حيث سيقوم بفحصهم ومقارنتهم باسم المستخدم وكلمة المرور الخاصة به في قاعدة البيانات.

فاذا كانت كلمة المرور واسم المستخدم صحيحين عندئذ سيتم تحويلي الى الصفحة التي اريدها

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.logging.Level;import java.util.logging.Logger;import javax.faces.application.FacesMessage;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;import javax.faces.context.FacesContext;/**** @author ralmoued*/@ManagedBean(name = "admin")@RequestScopedpublic class Administrator {private static final long serialVersionUID = 1L;private transient Connection con;private String username;private String password;private String message;/*** Initialisiert Mysql-Verbindung*/public Administrator() {try {Class.forName("com.mysql.jdbc.Driver");} catch (SQLException ex) {Logger.getLogger(Administrator.class.getName()).log(Level.SEVERE, null, ex);} catch (ClassNotFoundException ex) {Logger.getLogger(Administrator.class.getName()).log(Level.SEVERE, null, ex);}}public String getUsername() {return username;}public void setUsernamee(String username) {this.username= username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}/*** check if the username and password are correct.* you must have a table (administrator )in database (dbase)* with tow attribute Username and Password.* @return true if die login done successfully.*/public boolean checkLogin() {boolean login = false;try (Statement stmt = con.createStatement() [;)] {String sql = "SELECT * FROM dbase.administrator "+ "Where Username='" + username + "' "+ "AND Password='" + password + "' ";ResultSet result = stmt.executeQuery(sql);// If this user already existif (result.next()) {System.out.println("Hello " + username);login = true;} else {System.out.println("Error");setMessage("username or Password is not correct ");}} catch (SQLException e) {e.printStackTrace();}return login;}/*** If username and password both are correct* @return Bearbeitungsseite.*/public String bearbeitungsseite() {boolean check = checkLogin();while (check) {return "myPage?faces-redirect=true";}return null;}}
ننشأ صفحة نسميها login.xhtml
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"      xmlns:h="http://java.sun.com/jsf/html"      xmlns:p="http://primefaces.org/ui"      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"      xmlns:f="http://xmlns.jcp.org/jsf/core">    <h:head>        <title>Login</title>    </h:head>    <h:body>        <div style="width:1100px; border-width:1.5px; border-color:black; border-radius: 20px;             border-style:solid; margin-bottom: 20px; margin-top: 20px;             margin-left: 50px; margin-right: 50px; background-color: #D2B48C">            <h:form id="form" style="margin-left: 50px; margin-right: 50px;                     margin-top: 20px; margin-bottom: 20px">                <h2>Please enter the user name and password</h2>                <table>                    <tr>                        <td>Username:</td>                        <td><p:inputText id="userName" required="true"                                          label="userName" size="23" value="#{admin.username}"                                          requiredMessage=" Username is required"                                         validatorMessage=" username must be at least 3 characters">                                <f:validateRegex  for="userName" pattern="(([0-9a-zA-Z]*).{3,})"/>                            </p:inputText>                            <p:watermark for="userName" value="Username *" />                            <h:message for="userName" style="color:red" /></td>                    </tr>                         <tr>                        <td>Password:</td>                        <td><p:password id="pwd" value="#{admin.password}" label="Password"                                        size="23" required="true"                                        requiredMessage=" Password is required">                            </p:password>                            <p:watermark for="pwd" value="Password *" />                            <h:message for="pwd" style="color:red" /><br/></td>                    </tr>                </table>                <table>                    <tr>                        <td><p:commandButton value="Log in" action="#{admin.bearbeitungsseite()}"                                             update="@form"                                              style="margin-top: 10px; margin-left: 125px"/></td>                    </tr>                    <tr>                          <tr></tr>                        <tr></tr>                        <td><h:outputText value="#{admin.message}"                                          style="color: red;margin-left: 125px"/></td>                    </tr>                </table>            </h:form>            </h:body></html>

بالتوفيق

تم تعديل بواسطه vector_ever
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

في البداية ننشا صنف جافا ليتحكم بالبيانات التي سيقوم المستخدم باداخالها (اسم المستخدم وكلمة المرور) حيث سيقوم بفحصهم ومقارنتهم باسم المستخدم وكلمة المرور الخاصة به في قاعدة البيانات.

فاذا كانت كلمة المرور واسم المستخدم صحيحين عندئذ سيتم تحويلي الى الصفحة التي اريدها

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.logging.Level;import java.util.logging.Logger;import javax.faces.application.FacesMessage;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;import javax.faces.context.FacesContext;/**** @author ralmoued*/@ManagedBean(name = "admin")@RequestScopedpublic class Administrator {private static final long serialVersionUID = 1L;private transient Connection con;private String username;private String password;private String message;/*** Initialisiert Mysql-Verbindung*/public Administrator() {try {Class.forName("com.mysql.jdbc.Driver");} catch (SQLException ex) {Logger.getLogger(Administrator.class.getName()).log(Level.SEVERE, null, ex);} catch (ClassNotFoundException ex) {Logger.getLogger(Administrator.class.getName()).log(Level.SEVERE, null, ex);}}public String getUsername() {return username;}public void setUsernamee(String username) {this.username= username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}/*** check if the username and password are correct.* you must have a table (administrator )in database (dbase)* with tow attribute Username and Password.* @return true if die login done successfully.*/public boolean checkLogin() {boolean login = false;try (Statement stmt = con.createStatement() [;)] {String sql = "SELECT * FROM dbase.administrator "+ "Where Username='" + username + "' "+ "AND Password='" + password + "' ";ResultSet result = stmt.executeQuery(sql);// If this user already existif (result.next()) {System.out.println("Hello " + username);login = true;} else {System.out.println("Error");setMessage("username or Password is not correct ");}} catch (SQLException e) {e.printStackTrace();}return login;}/*** If username and password both are correct* @return Bearbeitungsseite.*/public String bearbeitungsseite() {boolean check = checkLogin();while (check) {return "myPage?faces-redirect=true";}return null;}}
ننشأ صفحة نسميها login.xhtml
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"      xmlns:h="http://java.sun.com/jsf/html"      xmlns:p="http://primefaces.org/ui"      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"      xmlns:f="http://xmlns.jcp.org/jsf/core">    <h:head>        <title>Login</title>    </h:head>    <h:body>        <div style="width:1100px; border-width:1.5px; border-color:black; border-radius: 20px;             border-style:solid; margin-bottom: 20px; margin-top: 20px;             margin-left: 50px; margin-right: 50px; background-color: #D2B48C">            <h:form id="form" style="margin-left: 50px; margin-right: 50px;                     margin-top: 20px; margin-bottom: 20px">                <h2>Please enter the user name and password</h2>                <table>                    <tr>                        <td>Username:</td>                        <td><p:inputText id="userName" required="true"                                          label="userName" size="23" value="#{admin.username}"                                          requiredMessage=" Username is required"                                         validatorMessage=" username must be at least 3 characters">                                <f:validateRegex  for="userName" pattern="(([0-9a-zA-Z]*).{3,})"/>                            </p:inputText>                            <p:watermark for="userName" value="Username *" />                            <h:message for="userName" style="color:red" /></td>                    </tr>                         <tr>                        <td>Password:</td>                        <td><p:password id="pwd" value="#{admin.password}" label="Password"                                        size="23" required="true"                                        requiredMessage=" Password is required">                            </p:password>                            <p:watermark for="pwd" value="Password *" />                            <h:message for="pwd" style="color:red" /><br/></td>                    </tr>                </table>                <table>                    <tr>                        <td><p:commandButton value="Log in" action="#{admin.bearbeitungsseite()}"                                             update="@form"                                              style="margin-top: 10px; margin-left: 125px"/></td>                    </tr>                    <tr>                          <tr></tr>                        <tr></tr>                        <td><h:outputText value="#{admin.message}"                                          style="color: red;margin-left: 125px"/></td>                    </tr>                </table>            </h:form>            </h:body></html>

بالتوفيق

لكن ماذا اذا ادخل المستخدم الرابط "myPage" بدون المرور عبر الـlogin.xhmlt ؟

كيف اتحقق من تسجيل دخول قبل فتح الصفح؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

لكن ماذا اذا ادخل المستخدم الرابط "myPage" بدون المرور عبر الـlogin.xhmlt ؟

كيف اتحقق من تسجيل دخول قبل فتح الصفح؟

في هذه الحالة نستعمل filter

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
هذى كود filter    وايظا ارسلت لك الكود الكاملا 

 

 

 

 

 

 

 

 

 

 

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/*

 * To change this license header, choose License Headers in Project Properties.

 * To change this template file, choose Tools | Templates

 * and open the template in the editor.

 */

/**

 *

 * @author revo

 */

@WebFilter(filterName = "filter", urlPatterns = {"*.xhtml"})

public class filter implements Filter {

    

    @Override

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    

    @Override

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request1 = (HttpServletRequest) request;

        HttpServletResponse response1 = (HttpServletResponse) response;

        String url = request1.getRequestURI();

        System.out.println(url);

        user u = (user) request1.getSession().getAttribute("user");

        if (u == null && url.contains("home.xhtml")) {

            System.out.println("1");

            response1.sendRedirect("index.xhtml");

        } else if (u != null&&!u.isIsLog() && url.contains("home.xhtml")) {

                        System.out.println("2");

 

            response1.sendRedirect("index.xhtml");

            

        } else if (u != null&&u.isIsLog() && (url.contains("index.xhtml")||url.equals("/Filter/"))) {

                        System.out.println("3");

 

            response1.sendRedirect("home.xhtml");

        } else {

                       System.out.println("4");

 

            chain.doFilter(request, response);

        }

    }

    

    @Override

    public void destroy() {

    }

    

}

 

Filter.rar

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لكن ماذا اذا ادخل المستخدم الرابط "myPage" بدون المرور عبر الـlogin.xhmlt ؟

كيف اتحقق من تسجيل دخول قبل فتح الصفح؟

نعم حينئذ تحتاج عمل Filter لكن أيضا يجب اضافة اخرى لملف الـ web.xml

تم تعديل بواسطه vector_ever
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 هذه الشيفرة المصدرية للحيلولة دون قدرة السمتحدم على الولوج الى الصفحة المحمية myPage بدون ان يعمل log in يعني حتى لو طلب myPage عن طريق الـ URL مباشرة فانه لن ينجح وسيتم اعادته الى صفحة التسجيل login

package packageName;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * * @author ralmoued */public class LoginFilter implements Filter { @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        // Get the loginBean from session attribute        Login loginBean = (Login)((HttpServletRequest)request).getSession().getAttribute("admin");        // System.out.println("loginBean value: " + loginBean);               if (loginBean == null || !loginBean.isLoggedIn()) {            String contextPath = ((HttpServletRequest)request).getContextPath();            ((HttpServletResponse)response).sendRedirect(contextPath + "/login.xhtml");        }                 chain.doFilter(request, response);    }    @Override    public void init(FilterConfig config) throws ServletException {          }    @Override    public void destroy() {    }       }

 

نذهب لملف web.xml ونقوم باضافة مايلي:

<!-- Login filter -->    <filter>        <filter-name>LoginFilter</filter-name>        <filter-class>packageName.LoginFilter</filter-class>    </filter>    <!-- Set the login filter to secure all the pages in the /mySecurePage/* path of the application -->    <filter-mapping>        <filter-name>LoginFilter</filter-name>        <url-pattern>/mySecurePage/*</url-pattern>        <dispatcher>REQUEST</dispatcher>        <dispatcher>FORWARD</dispatcher>    </filter-mapping>

mySecurePages  الموجودة في <url-pattern>/mySecurePage/*</url-pattern> هو عبارة عن المجلد الذي يجوي كل الصفحات التي أستطيع المحمية التي لا أستطيع الولوج اليها بدون تسجيل Log in

تم تعديل بواسطه vector_ever
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الفخ الآخر الذي يقع فيه الكثيرون هو انه حتى لو كان لدي فلتر يمنعني من الوصولو المباشر عن طريق الـ URL للصفحة المحمية myPage هو انني لو قمت بتسجيل الخروج log out  وتم تحويلي بشكل اوتوماتيكي الى اي صفحة ثانية فانه يمكنني بكل سهولة العودة الى myPage عن طريق زر back الموجود في متصفح الانترنت وقتها تصبح عملية تسجيل الخروج غير مفيدة ويبقى العملية كلها غير مؤمنة.

 

الحل هو ازالة الكاش وقتها لن يكون بمقدار زر back  ان يعود بنا الى حيث كنا وهذا هو المطلوب

package packageName;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.ServletResponse;import javax.servlet.ServletRequest;import javax.servlet.Filter;import javax.servlet.FilterConfig;import javax.servlet.FilterChain;import javax.servlet.http.HttpServletResponse;/** * * @author ralmoued */public class NoCacheFilter implements Filter {  private FilterConfig filterConfig = null;    @Override  public void init(FilterConfig filterConfig) {    this.filterConfig = filterConfig;  }    @Override  public void destroy() {    this.filterConfig = null;  }  /*The real work happens in doFilter().   The reference to the response object is of type ServletResponse,  so we need to cast it to HttpServletResponse:  */  @Override  public void doFilter(ServletRequest request, ServletResponse response,      FilterChain chain)      throws IOException, ServletException {    HttpServletResponse httpResponse = (HttpServletResponse) response;    /*Then we just set the appropriate headers    and invoke the next filter in the chain:    */    httpResponse.setHeader("Cache-Control", "no-cache");    httpResponse.setDateHeader("Expires", 0);    httpResponse.setHeader("Pragma", "No-cache");    chain.doFilter(request, response);    /* this method calls other filters in the order they are     written in web.xml    */  }}

بعد ذلك يجب تعريف هذا الكود في ملف الـ web.xml حيث نقوم باضافة مايلي

<!-- Cahe filter -->    <filter>        <display-name>NoCacheFilter</display-name>        <filter-name>NoCacheFilter</filter-name>        <filter-class>packageName.NoCacheFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>NoCacheFilter</filter-name>        <url-pattern>/mySecurePages/*</url-pattern>        <dispatcher>REQUEST</dispatcher>        <dispatcher>FORWARD</dispatcher>    </filter-mapping>

من الضروري والمهم جدا معرفة ان هذه العملية حساسة ويجب ان تتم بدقة والا فاننا سنقوم بحذف الكاش من كل الصفحات وهذا ما لا نريده...نحن نريد حذف الكاش فقط من صفحات معينة بعد عملية تسجيل الخروج

وهذا يتم عن طريق الأمر التالي الموجود  في ملف الـ web.xml

  <url-pattern>/mySecurePages/*</url-pattern>

حيث حددنا كل الصفحات الموجودة تحت المسار mySecurePages سوف يتم حذف الكاش منها ولن تكون قادرا على العودة اليها بعد تسجيل الخروج حتى لو استعملت زرة العودة للخلف back في متصفح الانترنت

تم تعديل بواسطه vector_ever
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حل أكثر من رائع ما شاء الله

شكراً لك أخي على الايضاح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .