• 【Java】JavaWeb权限管理


    权限管理分析

      每个网站都涉及到访问权限的控制。每个站点资源都需要被管理起来,用户只有具有访问某个资源的特定权限,才能够访问,否则拒绝访问。网站的访问权限控制,一种方法从 URI 入手,站点的每个资源都用唯一的 URI 描述,我们为想要管理起来的 URI 增加上权限属性,当用户访问资源时我们要先检查用户是否具有权限。采用过滤器技术实现权限拦截,进行判断,有权限即可访问,没有就阻止。另一种方法是采用入口有无的形式来做,根据后台数据判断有权限则界面有权限入口,没有权限则没有入口

    权限数据库设计

      数据库采用如下设计,总共由5张表组成,用户表、角色表、资源表、用户角色表和角色资源表。一个用户可以拥有多个角色,一个角色拥有多个资源。

          

        

     1 CREATE TABLE `user` (
     2   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
     3   `username` varchar(32) DEFAULT NULL COMMENT '用户名',
     4   `password` varchar(32) DEFAULT NULL COMMENT '密码',
     5   PRIMARY KEY (`id`)
     6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
     7 
     8 CREATE TABLE `role` (
     9   `id` int(11) NOT NULL AUTO_INCREMENT,
    10   `name` varchar(32) DEFAULT NULL COMMENT '角色名',
    11   `desc` varchar(32) DEFAULT NULL COMMENT '角色描述',
    12   PRIMARY KEY (`id`)
    13 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表';
    14 
    15 CREATE TABLE `resource` (
    16   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
    17   `title` varchar(32) DEFAULT NULL COMMENT '资源标题',
    18   `uri` varchar(32) DEFAULT NULL COMMENT '资源uri  ',
    19   PRIMARY KEY (`id`)
    20 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='资源表';
    21 
    22 CREATE TABLE `user_role` (
    23   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
    24   `user_id` int(11) NOT NULL COMMENT '用户id',
    25   `role_id` int(11) NOT NULL COMMENT '角色id',
    26   PRIMARY KEY (`id`)
    27 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户角色表';
    28 
    29 CREATE TABLE `role_resource` (
    30   `id` int(11) NOT NULL AUTO_INCREMENT,
    31   `role_id` int(11) DEFAULT NULL COMMENT '角色id',
    32   `resource_id` int(11) DEFAULT NULL COMMENT '资源id',
    33   PRIMARY KEY (`id`)
    34 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色资源表';
    db.sql

    拦截器控制权限

      界面通过url进行请求,由拦截器进行拦截,根据用户的信息,去数据库中查询此用户是否具有本次请求了url权限,如果有就通过请求,让他访问资源,如果没有就返回,提示用户不具有该资源的反问权限

    控制入口控制权限

    •   比如后台的菜单按钮,没一个按钮对应的是一个资源。在显示按钮的时候,可以通过后台先查询此用户具有那些资源,然后根据资源可以对应的像是这些按钮。此方法可以做到按钮级别的权限控制。
    •   web网页,还可以同过自定义标签来实现入口的控制。自定义标签参照:【JSP】自定义标签开发入门

         如:<diy:power value="${url}"><a>权限按钮</a></diy:power>

         此标签根据value,在后台查询数据库去判断是否具有权限,觉得标签内容是否显示

  • 相关阅读:
    关于c#.net 使用自动生成的TableAdapter类的Insert、update方法无效
    .net 字符流下载 迅雷下载问题
    win7 64位系统下使用Oracle的问题
    使用vs2010发布.net framework2.0的网站出现的 分析器错误
    c博客作业我的第一篇博客
    C博客作业01分支,顺序结构1
    机器学习特训营前四次课总结
    ASP.NET应用程序与页面生命周期
    asp.net 获取文件的详细属性,大小,修改日期,所在位置等
    Json string value cannot have line breaks(解决方法)
  • 原文地址:https://www.cnblogs.com/h--d/p/6121989.html
Copyright © 2020-2023  润新知