الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكة فى عمل Filter على ال Admin Page

Featured Replies

بتاريخ:

السلام عليكم

اكنت اريد حلا لهذه المشكلة

وهى بتوضيح انى اعمل invalidate لل session عند الضغط على log out link ولكن عند الضغط على back فى ال browser أعود الى هذه الصفحة مرة اخرى

مع العلم انى قمت بعمل filter  على هذه الصفحة لمنع الدخول اليها الا بعد عمل log in اولا

 

هذه هى صفحة ال     adminTamplate.xhtm

<?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:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="./resources/css/default.css" rel="stylesheet" type="text/css" />
        <link href="./resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
        <title>Welcome</title>
    </h:head>
    <h:body style="background: url('./resources/images/back.jpg') no-repeat center center fixed; width: 100%; height: 100%">

        <div id="top" >

            <h:graphicImage value="./resources/images/univ1.jpg" width="850" height="200"/>

        </div>
        <div id="content" class="center_content" style="background-color: white;">
            <div class="header">
                <h:graphicImage value="./resources/images/univ.jpg" width="700" height="50"/>
            </div>

            <p:toolbar styleClass="tabHeader">  
                <p:toolbarGroup styleClass="width_100" align="left">
                    <h:form styleClass="width_100">
                        <p:commandButton id="adminUniversityId" action="adminUniversity.xhtml" value="University" ajax="false" styleClass='#{facesContext.getViewRoot().getViewId().equals("/adminUniversity.xhtml")?"tab homeTabSelected":"tab homeTab"}'/>
                        <p:commandButton id="adminTopicsId" action="adminTopics.xhtml" value="Admins" ajax="false" styleClass='#{facesContext.getViewRoot().getViewId().equals("/adminTopics.xhtml")?"tab homeTabSelected":"tab homeTab"}'/>
                        <p:commandButton id="adminRegisterId" action="adminRegister.xhtml" value="Register" ajax="false" styleClass='#{facesContext.getViewRoot().getViewId().equals("/adminRegister.xhtml")?"tab homeTabSelected":"tab homeTab"}'/>
                        <p:commandButton id="adminReportsId" action="adminReports.xhtml" value="Reports" ajax="false" styleClass='#{facesContext.getViewRoot().getViewId().equals("/adminReports.xhtml")?"tab homeTabSelected":"tab homeTab"}'/>
                    </h:form>
                </p:toolbarGroup>
                <p:toolbarGroup styleClass="width_100" align="right">
                    <p:commandLink value="Welcome: #{facesContext.externalContext.sessionMap['userName']}    |   sign out" action="#{userlogin.logout()}" styleClass="signOut">sign out</p:commandLink>
                </p:toolbarGroup>
            </p:toolbar>
            <ui:insert name="content">
                <ui:include src="/superAdmin.xhtml"/>
            </ui:insert>
        </div>
        <div id="bottom" >
            <center>
                <hr> </hr>
                <br/>
                <font size="3" style="font-weight: bold; color:#DA70D6">
                    (c) Copyright ITShop 2013.  All rights reserved.
                </font>
            </center>
        </div>
    </h:body>
</html>


وهذ هو كود ال log in and log out

 //login and logout method...........
    public String login() {
        try {

            Connection con = Database.getConnection();
            Statement stam = con.createStatement();
            ResultSet rs = stam.executeQuery("select * from users where username ='" + username + "'");
            while (rs.next()) {
                user.setName(rs.getString("name"));
                user.setUserName(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setAge(rs.getString("age"));
                user.setUniversityId(rs.getInt("universityId"));
                user.setFacultyId(rs.getInt("facultyId"));
                user.setRole(Role.valueOf(rs.getString("role")));
                user.setUserClass(rs.getInt("class"));
                name = user.getName();
                age = user.getAge();
                setUser(user);
            }
            if (user != null & (user.getPassword() == null ? password == null : user.getPassword().equals(password))) {
                error = null;

                ExternalContext external = FacesContext.getCurrentInstance().getExternalContext();
                Map<String, Object> session = external.getSessionMap();
                session.put("fullName", user.getName());
                session.put("userName", username);
                session.put("userAge", user.getAge());
                session.put("userClass", user.getUserClass());
                session.put("userRole", user.getRole());
                session.put("userFaculty", getFacultyName(user.getFacultyId()));
                session.put("userFacultyId", user.getFacultyId());
                if (user.isUser()) {
                    return "/index.xhtml";
                } else {
                    //return "/superAdmin.xhtml";
                    return "/adminTemplate.xhtml";
                }
            }
        } catch (Exception e) {
            System.out.println("Error In Userlogin.Login() -->" + e.getMessage());
        }
        error = "invalid username or password";
        return "/login.xhtml";
    }

 // logout method...........

    public String logout() {
        FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
        return "login.xhtml?faces-redirect=true";
    }

وهذه هى ال filter class

AdminFilter.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package 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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author shokry
 */
public class AdminFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        
        String userRole = req.getSession(true).getAttribute("userRole").toString();
        if (!"SUPER".equals(userRole) || userRole==null) {
            HttpServletResponse res = (HttpServletResponse) response;
            res.sendRedirect(req.getContextPath() + "/login.xhtml");
            return;
        }

        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {
    }
}

وهذا هو ال filter tag فى ال web.xml

<filter>
        <filter-name>AdminFilter</filter-name>
        <filter-class>filter.AdminFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>AdminFilter</filter-name>
        <url-pattern>/adminTemplate.xhtml</url-pattern>
        <url-pattern>/adminUniversity.xhtml</url-pattern>
        <url-pattern>/adminTopics.xhtml</url-pattern>
        <url-pattern>/adminRegister.xhtml</url-pattern>
        <url-pattern>/adminReports.xhtml</url-pattern>
    </filter-mapping>
    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/login.xhtml</location>
    </error-page>

شكرا وارجو الافادة السريعة

بتاريخ:

أولا: مفيش داعى انك تسجل ال Filter فى ال web.xml وممكن تستبدل الموضوع  ده بال annotations عن طريق WebFilter@ وتخصص امتداد الصفحات اللى ال filter حيشتغل عليها بدل كتابتها كلها فى الملف بهذا الشكل

 

ثانيا:مشكلة ال back button فى ال browser انه بعد عمل الlogout بيجيب الصفحة من ال cache والحل لمنع عمل ذلك انك تقول للبراوزر متعملش cache لل pages وابعت ال request لل server لما اضغط على ال back button from browser ولعمل ذلك بمنتهى البساطة حتعمل filter تانى لمنع عمل ال cache والكود بتاعه كالاتى ( وطبعا حيشتغل على صفحات ال xhtml كلها )

package com.filter;

import java.io.IOException;

import javax.faces.application.ResourceHandler;
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;

@WebFilter(urlPatterns = { "*.xhtml" })
public class NoCacheFilter implements Filter {

	/**
	 * Default constructor.
	 */
	public NoCacheFilter() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;

		if (!req.getRequestURI().startsWith(
	req.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)){ // Skip  JSF  resources(CSS/JS/Images/etc)
																				
																				
			res.setHeader("Cache-Control","no-cache, no-store, must-revalidate"); // HTTP 1.1.
			res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
			res.setDateHeader("Expires", 0); // Proxies.
		}

		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

بتاريخ:
  • كاتب الموضوع

اشتغلت ولكن بيظهرلى هذا ال error  فى ال browser

Error code: ERR_CACHE_MISS

وانا اريده ان يرجع لل login page

بتاريخ:

الرسالة بتتغيرطبقا للمتصفح يعنى على ال firefox بيديك Document Expired وعلى chrome بتديك   Confirm Form Resubmission  اعمل refresh او reload للمتصفح وحيوديك للوجين على طول 

 
  • بعد 2 أسابيع...
بتاريخ:
user.setName(rs.getString("name"));
user.setUserName(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setAge(rs.getString("age"));
user.setUniversityId(rs.getInt("universityId"));
user.setFacultyId(rs.getInt("facultyId"));
user.setRole(Role.valueOf(rs.getString("role")));
user.setUserClass(rs.getInt("class"));
name = user.getName();
age = user.getAge();
setUser(user);

 

ماذا تمثل هنا كلمة user 

وكلمة name

وكلمة age

بتاريخ:

هذه أسماء الأعمدة

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.