当前位置:  技术问答>java相关

欢迎讨论JSP模式中的权限控制!!!!

    来源: 互联网  发布时间:2017-04-03

    本文导语:  我最近用J2EE框架做了一个移动项目,发现权限控制没有做好, 我现在是这样做的,在每一个页面中设置一个标签,对应一个功能号, 登录后权限字符串存在session中,然后在标签中判断本页面对应的功能 是否存在字...

我最近用J2EE框架做了一个移动项目,发现权限控制没有做好,
我现在是这样做的,在每一个页面中设置一个标签,对应一个功能号,
登录后权限字符串存在session中,然后在标签中判断本页面对应的功能
是否存在字符串中,这样的话,页面多了,维护不方便,
请高手参与讨论

|
采用MVC模式,权限放在数据库中,调有底层的时候如果没有权限,则在Controller中捕获异常,重定向道出错页面给可以!并且,这种方式可以单独抽象出来权限控制模块,有利于复用!可以设计一个User对象!
在大型的项目中,这个方法很有效!

|
同意BOVY。
用servlet作为controller,权限存放在数据库里,
建立user对象,页面提交到servlet,进行权限判断,然后重定向。
这样,每个功能各自独立,比较容易做。

|
关于jsp页面的权限管理应该存在一个层次:
我现在把它们分为三个层次
 1 应用或目录的访问权,主要是通过判断是否登陆来决定,同时获得用户登陆信息。这个实现通过配置jsp web server的安全管理来实现,在tomcat下已经提供了三种模式来实现,一般不必编程。只需配置就可以了。
 2 判断用户是否对具体页面有访问权,我认为在Filter中实现比较好,如果使用controller模式,就无法通过url直接访问资源,必须通过转发,但是页面上访问的资源种类多有图形、css文件、js文件等等,这样要不就是服务器端配置比较乱,要不就是写页面时候比较麻烦。
 3 判断用户对数据或功能的权限,就必须写在页面中了。

|
这是我在Filter实现权限控制的模式

 import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class PurviewFilter implements Filter {
   private FilterConfig filterConfig;
  public void init(FilterConfig filterConfig) throws ServletException {
     this.filterConfig=filterConfig;
  }

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

    if (request instanceof HttpServletRequest) {
      HttpServletRequest req = (HttpServletRequest)request;

      String userName =req.getRemoteUser();
      String resourcePath= req.getRequestURI();
      if(userName==null)
      {
          //没有登录用户处理

          //return;
      }

      if(!verifyUser(userName,resourcePath))
      {
          //用户没有资源使用权限处理

         // return;
      }

      chain.doFilter(request,response);
    }
  }

  private boolean verifyUser(String userName,String resourcePath)
  {
      //在这里填写校验处理过程
      // 载入权限控制列表
      // 判断resourcePath是否在权限控制列表
      // 不在 表明resourcePath不被保护,返回true
      // 在
      //   判断用户是否有权限
      return false;
  }

  public void destroy() {

  }
}

|
权限控制列表,可以有多种载入方式
  如果是使用tomcat4以上版本的话,可以做一个bean,配置成JNDI Resources,这样就可以使用了,这是当前的流行做法。例如
  Context initCtx = new InitialContext();
  Context envCtx = (Context) initCtx.lookup("java:comp/env");
  MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");

  还有你可以在ServletContextListener建立一个控制列表对象,这样
你就可以读取了,这是我以前的用法。
    



    
 
 

您可能感兴趣的文章:

  • EJB设计模式-----调查受欢迎的程度
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我的毕业设计:java+远程控制+防火墙技术+网络安全,欢迎大家一起讨论!
  • KJAVA开发联盟成立了!欢迎欢迎,热烈欢迎!
  • 求助 如何取消fedora 8启动时候的欢迎应用程序
  • 欢迎加入Linux群 群号:11791406
  • http://www.itpub.net 论坛更换数据库,速度更快,欢迎大家前去讨论!
  • 强烈要求开辟UnixLinux下编程论坛,欢迎跟贴
  • 欢迎大家来聊聊Linux在国内的应用!
  • 欢迎访问http://211.71.69.201/joyfire/
  • 散分,欢迎访问joyfire.net
  • 欢迎灌水。。。。。。
  • 欢迎高手指点迷津
  • 超酷数据库工具发布(JAS), 欢迎使用
  • 欢迎大家到c/c++ 面向对象去作客(请版主不要删)
  • 我刚建的论坛,欢迎访问:http://its.letfree.com/forum
  • Linux9.2版本无法启动欢迎程序,SOS
  • linux qq群 欢迎加入!!!!!!!
  • 怎样将redhat9的欢迎界面改成英文的?
  • 欢迎大家进来谈谈!!
  • Android world群:62553058欢迎大家加入!
  • 欢迎进入linux网络栈学习群111201180
  • [高分求助]安装Elastix报错,无法进入欢迎界面


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3