2014-02-04 2 views
0

Код я использовал, чтобы запретить пользователю доступ к URL без входа выглядит следующим образом:Как запретить пользователю с гостевыми правами доступ к страницам с правами администратора, введя URL-адрес в браузере?

web.xml

<filter> 
    <filter-name>Filtro_Autenticar</filter-name> 
    <filter-class>Controlador.Filtro_Autenticar</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>Filtro_Autenticar</filter-name> 
    <url-pattern>/vistas/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
</filter-mapping> 

Filtro_Autenticar.java

public class Filtro_Autenticar implements Filter { 
    public void doFilter (ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     HttpSession session; 
     if (req instanceof HttpServletRequest){ 
      session = ((HttpServletRequest)req).getSession(); 
      //Eliminar la caché 
      HttpServletResponse hsr = (HttpServletResponse) res; 
      hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
      hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
      hsr.setDateHeader("Expires", 0); // Proxies. 
      //Verificar si la sesion es diferente de null 
      if (session.getAttribute("user") != null) { 
       //solo deja pasar a la zona restringida al usuario 
       chain.doFilter(req, res); 
      } else {    
       ((HttpServletResponse)res).sendRedirect(((HttpServletRequest)req).getContextPath()+ "/index.jsp"); 
      } 
     } 
    } 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 
     String exclude= filterConfig.getInitParameter("exclude"); 
    } 

    @Override 
    public void destroy() { 
    } 
} 

Doing использование этого кода может ограничивать доступ к некоторым страницам jsp в зависимости от пользователя, который вошел в систему?

ответ

1

Вам нужно каким-то образом сохранить пользовательский тип в сеансе. Как вы получите пользовательский тип в сеансе, зависит от вашей реализации. Например, когда пользователь входит в систему, вы можете посмотреть это из таблицы базы данных и поместить ее в сеанс.

В коде авторизации:

session.setAttribute("usertype", usertype_from_db); 

В верхней части страницы вы ограничивающий доступ к технологиям, прежде чем приступить к печати ничего:

String usertype = (String)session.getAttribute("usertype"); 
if(!"admin".equals(usertype)) 
{ 
    response.sendRedirect("unauthorized.jsp"); 
    return; //necessary to make the redirect happen right now 
} 
+0

Я Передача пользовательских данных в этом случае 'запроса. getSession(). setAttribute («пользователь», пользователь); 'и я получаю данные таким образом' Usuario user = (Usuario) session.getAttribute («user»); 'и теперь условие выглядит следующим образом: –

+0

' if (session.getAttribute ("user")! = null) { if ("0" .equals (user.getGrupo(). toString())) { chain.doFilter (req, res); } еще { } // соло дежа Pasar ла зона restringida аль Новичок} еще { // redirecciona аль index.jps ((HttpServletResponse) Рез) .sendRedirect (((HttpServletRequest) REQ) .getContextPath () + "/index.jsp"); } 'и теперь, как сделать, когда фильтр равен 1 –

Смежные вопросы