بتاريخ: 30 أغسطس 201411 سنة comment_254234 صممت مشروع به صفحة log in تأخذ البيانات من جدول في قاعدة البيانات به حقل لل username وال password وادرجت زر للخروج كتبت به هذا الكود public String cb4_action() { FacesContext context = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession)context.getExternalContext().getSession(true); session.invalidate(); return "logout";//any page take you } تم عمل log out بنجاح ، وعند عمل back للصفحة يخبرني الbrowser ان الsession انتهت وتظهر هذه الرسالة Because of inactivity, your session has timed out and is no longer active. The page will automatically be reloaded in 10 seconds; if not, click here. ثم بعد ذلك يتم تحميل الصفحة على أول user name موجود عندي في الجدول حتى لو ما كنتش داخل بيه من قبل ، فما المشكله؟؟؟؟؟؟ تقديم بلاغ
بتاريخ: 31 أغسطس 201411 سنة comment_254237 إستبدل الـ parameter للـ method المستخدمة getSession(true); بالـ parameter........false كالتالي getSession(false); حتى لا يعمل إنشاء جديد للـ session إن شاء الله تحل المشكلة تقديم بلاغ
بتاريخ: 31 أغسطس 201411 سنة كاتب الموضوع comment_254243 جزاك الله كل خير على الرد يا استاذه ، ولكن المشكله لا زالت قائمه... تقديم بلاغ
بتاريخ: 31 أغسطس 201411 سنة comment_254249 أنا جربت الكود قبل ما أكتب الرد ..فقط تأكد من الأعدادات الأخرى لدى حضرتك هذا من جهة من جهة أخرى أنا عندما أعمل logout أذهب الى صفحة أخرى مثل الصفحة الاولى الترحيبية للنظام على سبيل المثال حضرتك تعمل return الى الصفحة logout يعني أنا أقف على نفس الصفحة واعمل logout وأعود لها في نفس الوقت ؟ كما في الكود الذي كتبته لنا ؟ تقديم بلاغ
بتاريخ: 31 أغسطس 201411 سنة كاتب الموضوع comment_254260 عند عمل log out ، أذهب الى صفحة ال log in التي يتم ادخال الuser name وال password بها ثم عند عمل back للصفحة الترحيبية والتي بها ايضا زر ال log out يتم الدخول على أول username في الجدول عندي وقد قمت بتغيير ال parameter كما تفضلتي ولكن المشكلة قائمة ، معذرة فأنا لا زلت مبتديء ، هل توجد عوامل اخرى غير هذا الكود تؤدي الى هذه المشكلة؟ علما بأن الانتقال الى باقي صفحات المشروع تتم عن طريق execute with parameter في ال task flow تقديم بلاغ
بتاريخ: 31 أغسطس 201411 سنة comment_254261 من الأفضل أن تقوم باستخدام Bind variables لعرض بيانات المستخدم بناء على القيم الموجودة في ال Session Scope تقديم بلاغ
بتاريخ: 31 أغسطس 201411 سنة كاتب الموضوع comment_254263 بارك الله فيك اخي في الله استاذ احمد ،ال execute with parameter يعتمد بالفعل على Bind variables موجو في ال Session Scope صورة توضيحية المشكلة ليست في تلك الصفحات، المشكلة بين صفحة ال log in والصفحة الرئيسية التي بها زر ال log out بارك الله فيكم تقديم بلاغ
بتاريخ: 31 أغسطس 201411 سنة كاتب الموضوع comment_254264 وهذه هي العلاقة بين صفحة ال login والصفحة الرئيسية تقديم بلاغ
بتاريخ: 1 سبتمبر 201411 سنة comment_254291 لو كانت تعتمد على قيم من ال Session Scope لما كان هناك بيانات بعد عملية logout تأكد من عمل ال ExecuteWithParam و أنها تأخذ قيمها من ال Session Scope تقديم بلاغ
بتاريخ: 4 سبتمبر 201411 سنة comment_254453 اخى هذا اقتراح منى عسى ان يحل مشكلتك حاول ان تجعل قيمة password and username فى بداية دالة login تساوى null تقديم بلاغ
بتاريخ: 6 سبتمبر 201411 سنة كاتب الموضوع comment_254508 أجرب وأفيدك بالنتائج أخي في الله استاذ/ طارق تقديم بلاغ
بتاريخ: 7 سبتمبر 201411 سنة كاتب الموضوع comment_254540 لسه المشكله قائمه ، عموما أنا هاكتب الأكواد كلها يمكن تكون فيه مشكله وأحد الأعضاء يعرفها بارك الله فيكم دا كود ال login package view; import javax.faces.application.Application; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; import model.APPMOD.AppModuleAMImpl; import model.APPMOD.UserInfo; import oracle.adf.view.rich.component.rich.RichDocument; import oracle.adf.view.rich.component.rich.RichForm; import oracle.adf.view.rich.component.rich.input.RichInputText; import oracle.adf.view.rich.component.rich.layout.RichDecorativeBox; import oracle.adf.view.rich.component.rich.layout.RichPanelFormLayout; import oracle.adf.view.rich.component.rich.layout.RichPanelStretchLayout; import oracle.adf.view.rich.component.rich.nav.RichCommandButton; import oracle.adf.view.rich.component.rich.output.RichOutputText; public class Login { private String Loginmesssage; private String Noteslable; private String username; private String passowrd; private String message; private RichDecorativeBox db2; private RichDecorativeBox db1; private RichPanelStretchLayout psl1; private RichForm f1; private RichDocument d1; private RichPanelFormLayout pfl1; private RichPanelFormLayout pfl2; private RichInputText it1; private RichInputText it2; private RichOutputText ot1; private RichCommandButton cb1; public void setLoginmesssage(String Loginmesssage) { this.Loginmesssage = Loginmesssage; } public String getLoginmesssage() { return Loginmesssage; } public void setNoteslable(String Noteslable) { this.Noteslable = Noteslable; } public String getNoteslable() { return Noteslable; } public void setUsername(String username) { this.username = username; } public String getUsername() { return username; } public void setPassowrd(String passowrd) { this.passowrd = passowrd; } public String getPassowrd() { return passowrd; } public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } public void setDb2(RichDecorativeBox db2) { this.db2 = db2; } public RichDecorativeBox getDb2() { return db2; } public void setDb1(RichDecorativeBox db1) { this.db1 = db1; } public RichDecorativeBox getDb1() { return db1; } public void setPsl1(RichPanelStretchLayout psl1) { this.psl1 = psl1; } public RichPanelStretchLayout getPsl1() { return psl1; } public void setF1(RichForm f1) { this.f1 = f1; } public RichForm getF1() { return f1; } public void setD1(RichDocument d1) { this.d1 = d1; } public RichDocument getD1() { return d1; } public void setPfl1(RichPanelFormLayout pfl1) { this.pfl1 = pfl1; } public RichPanelFormLayout getPfl1() { return pfl1; } public void setPfl2(RichPanelFormLayout pfl2) { this.pfl2 = pfl2; } public RichPanelFormLayout getPfl2() { return pfl2; } public void setIt1(RichInputText it1) { this.it1 = it1; } public RichInputText getIt1() { return it1; } public void setIt2(RichInputText it2) { this.it2 = it2; } public RichInputText getIt2() { return it2; } public void setOt1(RichOutputText ot1) { this.ot1 = ot1; } public RichOutputText getOt1() { return ot1; } public void setCb1(RichCommandButton cb1) { this.cb1 = cb1; } public RichCommandButton getCb1() { return cb1; } public String login_action() { // Add event code here... FacesContext context = FacesContext.getCurrentInstance(); try { Application app; app = context.getApplication(); ValueBinding bind = app.createValueBinding("#{data.AppModuleAMDataControl.dataProvider}"); AppModuleAMImpl am = (AppModuleAMImpl)bind.getValue(context); UserInfo user; user = am.Login(username, passowrd); if (user != null) { context.getExternalContext().getSessionMap().put("userKay", user); passowrd = null; return "main"; } } catch (Exception e) { // TODO: Add catch code e.printStackTrace(); } FacesMessage mm = new FacesMessage("wrong username or password"); context.addMessage(Noteslable, mm); passowrd = null; return null; } public boolean isAdmin() { UserInfo user = (UserInfo)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userKay"); if (user == null) { return false; } int userType = user.getUSER_TYPE(); if (userType == 1) { return true; } return false; } public boolean isAdmindisabled() { UserInfo user = (UserInfo)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userKay"); if (user == null) { return true; } int userType = user.getUSER_TYPE(); if (userType == 2||userType == 3) { return false; } return true; } } ودا كود ال userinfo package model.APPMOD; public class UserInfo { private int SCH_ID; private String SCH_NAME; private String SCH_USRNAME; private String SCH_PASSWORD; private String SCH_PHONE; private String SCH_FAX; private String SCH_MAIL; private int SCH_CATEGORY; private int SCH_GRADE; private int SCH_REGION; private int USER_TYPE; public void setSCH_ID(int SCH_ID) { this.SCH_ID = SCH_ID; } public int getSCH_ID() { return SCH_ID; } public void setSCH_NAME(String SCH_NAME) { this.SCH_NAME = SCH_NAME; } public String getSCH_NAME() { return SCH_NAME; } public void setSCH_USERNAME(String SCH_USERNAME) { this.SCH_USRNAME = SCH_USERNAME; } public String getSCH_USERNAME() { return SCH_USRNAME; } public void setSCH_PASSWORD(String SCH_PASSWORD) { this.SCH_PASSWORD = SCH_PASSWORD; } public String getSCH_PASSWORD() { return SCH_PASSWORD; } public void setSCH_PHONE(String SCH_PHONE) { this.SCH_PHONE = SCH_PHONE; } public String getSCH_PHONE() { return SCH_PHONE; } public void setSCH_FAX(String SCH_FAX) { this.SCH_FAX = SCH_FAX; } public String getSCH_FAX() { return SCH_FAX; } public void setSCH_MAIL(String SCH_MAIL) { this.SCH_MAIL = SCH_MAIL; } public String getSCH_MAIL() { return SCH_MAIL; } public void setSCH_CATEGORY(int SCH_CATEGORY) { this.SCH_CATEGORY = SCH_CATEGORY; } public int getSCH_CATEGORY() { return SCH_CATEGORY; } public void setSCH_GRADE(int SCH_GRADE) { this.SCH_GRADE = SCH_GRADE; } public int getSCH_GRADE() { return SCH_GRADE; } public void setSCH_REGION(int SCH_REGION) { this.SCH_REGION = SCH_REGION; } public int getSCH_REGION() { return SCH_REGION; } public void setUSER_TYPE(int USER_TYPE) { this.USER_TYPE = USER_TYPE; } public int getUSER_TYPE() { return USER_TYPE; } } ودا كود ال appmodulamImpl package model.APPMOD; import oracle.jbo.Row; import oracle.jbo.ViewCriteria; import oracle.jbo.ViewCriteriaRow; import oracle.jbo.ViewObject; import oracle.jbo.server.ApplicationModuleImpl; import oracle.jbo.server.ViewLinkImpl; import oracle.jbo.server.ViewObjectImpl; // --------------------------------------------------------------------- // --- File generated by Oracle ADF Business Components Design Time. // --- Fri Aug 22 13:25:11 EET 2014 // --- Custom code may be added to this class. // --- Warning: Do not modify method signatures of generated methods. // --------------------------------------------------------------------- public class AppModuleAMImpl extends ApplicationModuleImpl { /** * This is the default constructor (do not remove). */ public AppModuleAMImpl() { } public UserInfo Login(String userName,String password){ UserInfo user= null; ViewObject vo = getSchools1_4(); ViewCriteria vc = vo.createViewCriteria(); ViewCriteriaRow vcr =vc.createViewCriteriaRow(); vcr.setAttribute("SchUsrname", userName); vcr.setAttribute("SchPassword", password); vc.add(vcr); vo.applyViewCriteria(vc); vo.executeQuery(); if (vo.hasNext()) { user= new UserInfo(); Row row=vo.next(); user.setSCH_ID (((Number)row.getAttribute("SchId")).intValue()); user.setSCH_CATEGORY(((Number)row.getAttribute("SchCategory")).intValue()); user.setSCH_GRADE(((Number)row.getAttribute("SchGrade")).intValue()); user.setSCH_FAX ((String)row.getAttribute("SchFax")); user.setSCH_MAIL((String)row.getAttribute("SchMail")); user.setSCH_NAME((String)row.getAttribute("SchName")); user.setSCH_PASSWORD((String)row.getAttribute("SchPassword")); user.setSCH_PHONE((String)row.getAttribute("SchPhone")); user.setSCH_USERNAME((String)row.getAttribute("SchUsrname")); user.setUSER_TYPE(((Number)row.getAttribute("UserType")).intValue()); } return user; } /** * Container's getter for Category1_1. * @return Category1_1 */ public ViewObjectImpl getCategory1_1() { return (ViewObjectImpl)findViewObject("Category1_1"); } /** * Container's getter for Schools1_1. * @return Schools1_1 */ public ViewObjectImpl getSchools1_1() { return (ViewObjectImpl)findViewObject("Schools1_1"); } /** * Container's getter for SchoolsFk1VL1. * @return SchoolsFk1VL1 */ public ViewLinkImpl getSchoolsFk1VL1() { return (ViewLinkImpl)findViewLink("SchoolsFk1VL1"); } /** * Container's getter for Export1_1. * @return Export1_1 */ public ViewObjectImpl getExport1_1() { return (ViewObjectImpl)findViewObject("Export1_1"); } /** * Container's getter for Grade1_1. * @return Grade1_1 */ public ViewObjectImpl getGrade1_1() { return (ViewObjectImpl)findViewObject("Grade1_1"); } /** * Container's getter for Schools1_2. * @return Schools1_2 */ public ViewObjectImpl getSchools1_2() { return (ViewObjectImpl)findViewObject("Schools1_2"); } /** * Container's getter for SchoolsFk2VL1. * @return SchoolsFk2VL1 */ public ViewLinkImpl getSchoolsFk2VL1() { return (ViewLinkImpl)findViewLink("SchoolsFk2VL1"); } /** * Container's getter for Imports1_1. * @return Imports1_1 */ public ViewObjectImpl getImports1_1() { return (ViewObjectImpl)findViewObject("Imports1_1"); } /** * Container's getter for PsTxn1. * @return PsTxn1 */ public ViewObjectImpl getPsTxn1() { return (ViewObjectImpl)findViewObject("PsTxn1"); } /** * Container's getter for Region1_1. * @return Region1_1 */ public ViewObjectImpl getRegion1_1() { return (ViewObjectImpl)findViewObject("Region1_1"); } /** * Container's getter for Schools1_3. * @return Schools1_3 */ public ViewObjectImpl getSchools1_3() { return (ViewObjectImpl)findViewObject("Schools1_3"); } /** * Container's getter for SchoolsFk3VL1. * @return SchoolsFk3VL1 */ public ViewLinkImpl getSchoolsFk3VL1() { return (ViewLinkImpl)findViewLink("SchoolsFk3VL1"); } /** * Container's getter for Schools1_4. * @return Schools1_4 */ public ViewObjectImpl getSchools1_4() { return (ViewObjectImpl)findViewObject("Schools1_4"); } /** * Container's getter for Export1_3. * @return Export1_3 */ public ViewObjectImpl getExport1_3() { return (ViewObjectImpl)findViewObject("Export1_3"); } /** * Container's getter for ExportFk1VL2. * @return ExportFk1VL2 */ public ViewLinkImpl getExportFk1VL2() { return (ViewLinkImpl)findViewLink("ExportFk1VL2"); } /** * Container's getter for Imports1_2. * @return Imports1_2 */ public ViewObjectImpl getImports1_2() { return (ViewObjectImpl)findViewObject("Imports1_2"); } /** * Container's getter for ImportsFk1VL1. * @return ImportsFk1VL1 */ public ViewLinkImpl getImportsFk1VL1() { return (ViewLinkImpl)findViewLink("ImportsFk1VL1"); } /** * Container's getter for Imports1_3. * @return Imports1_3 */ public ViewObjectImpl getImports1_3() { return (ViewObjectImpl)findViewObject("Imports1_3"); } /** * Container's getter for shImpVL1. * @return shImpVL1 */ public ViewLinkImpl getshImpVL1() { return (ViewLinkImpl)findViewLink("shImpVL1"); } } وكود ال log out زي ما هوه اللي في أول مشاركه ، تعبتكوم معايا أنا عارف... تقديم بلاغ
بتاريخ: 7 سبتمبر 201411 سنة comment_254545 مسألة حفظ اسم المستخدم عادة تكون خاصية في المستعرض ولا دخل للبرمجة فيها تقديم بلاغ
بتاريخ: 7 سبتمبر 201411 سنة كاتب الموضوع comment_254547 دا مش بيحفظ اسم المستخدم يا باشمهندس، أنا بعد ما اعمل log out واضغط على back بيرجع لنفس الصفحة الرئيسية بنفس اليوزر ، ولما اضغط على اي link في الصفحة الرئيسية بيدينى الرسالة دي Because of inactivity, your session has timed out and is no longer active. The page will automatically be reloaded in 10 seconds; if not, click here وبعد 10 ثواني بيحمل الصفحة الرئيسية برضو بس المرادي مش بنفس اليوزر ، بيرجع بأول يوزر عندي في الجدول بالرغم اني ما دخلتش بيه اصلا وتشتغل اللينكات معايا عادي خالص لأول يوزر في الجدول ، مش عارف ليه تقديم بلاغ
بتاريخ: 8 سبتمبر 201411 سنة comment_254591 غالباً توجد مشكلة عندك في عملية إنهاء الجلسة. تتبع الكود مرة ثانية تقديم بلاغ
بتاريخ: 29 سبتمبر 201411 سنة comment_255309 جرب تضيف السطر ده للكود ADFContext.getCurrent().removeScope(ADFContext.SESSION_SCOPE); تقديم بلاغ
بتاريخ: 30 سبتمبر 201411 سنة comment_255353 mohmmad sakrهذا السطر لن يفرق شيئاً لأنه المفترض ان invalidate تقوم بحذف كل شئ تقديم بلاغ
بتاريخ: 30 سبتمبر 201411 سنة comment_255359 جرب أن تذهب إلى ال Task flow في Exception Handler وتختار صفحة الدخول (Login) تقديم بلاغ
بتاريخ: 30 سبتمبر 201411 سنة comment_255365 mohmmad sakr هذا السطر لن يفرق شيئاً لأنه المفترض ان invalidate تقوم بحذف كل شئ كان عندي مشكلة مشابهة مع 12cو لما دورت لقيت انها bug و السطر ده حل المشكلة بس مش فاكر اذا كان نفس نص الرسالة و لا لا تقديم بلاغ
بتاريخ: 1 أكتوبر 201411 سنة comment_255395 نحن نعمل على 12c ولا توجد لدينا أي مشكلة في logout تقديم بلاغ
بتاريخ: 1 أكتوبر 201411 سنة comment_255415 نحن نعمل على 12c ولا توجد لدينا أي مشكلة في logoutانا كنت كاتب نفس كود ال logout بس مشغل ال glassfish sever مش ال weblogic و كانت في مشكلة في انهاء ال session و لما زودت السطر ده كل اشتغل تمام تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.