简单的权限管理系统

最近在网上学习了一些权限管理系统,发现都差不多,只是复杂一些的权限管理系统分的更加细致,考虑的因素也越多。权限管理模块就是为了管理用户是否有权利访问某个权限,如果不能则拒绝访问。而我自己也做利用了jfinal做了一个简单的权限管理系统。小弟不精,可能还有些错误,请大家指明.
还有就是这里数据的表不对应贴出来的代码的表
数据库:
表1:super administrator (对应代码的teacher) 超级管理员的账号密码
表2:administrator 存储普通的管理员的账号密码
表3:administrator_message (对应代码的groups) 普通管理员的基本信息
表4:students
表5:student_message (对应代码的message)
表创建对应的id,name,age,sex,remark属性等

超级管理员inori:可以对学生进行增删改查,对其他管理员进行权限分配
普通的管理员miku:只能查看学生信息和增加学生
普通的管理员Alan:只能查看学生信息和修改学生信息
普通的管理员shiro:只能查看学生信息和删除学生
学生:只能查看自己的基本信息

我是在上两篇jfinal的基础上进行修改,只贴权限管理的部分代码
登录时的验证

package com.login;

import java.util.List;

import com.Interceptor.LogInterceptor;
import com.Permissions.Groups;
import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.ext.render.CaptchaRender;
import com.students.students;
import com.teachers.teachers;

import net.sf.json.JSONObject;

public class loginControler extends Controller
{
    
    public void index()
    {   
        render("login.jsp");
    }
    
    public void login()
    {
        String username=getPara("username");
        String password=getPara("password");
        String sql="select * from teachers where username='"+username+"' and password='"+password+"'";
        List<teachers> list=teachers.dao.find(sql); 
        //验证超级管理员身份
        if(list.size()!=0 )
        {
            redirect("/choose");
        }
        else 
        {
            sql = "select * from Administrator where username='"+username+"' and password='"+password+"'";
            list=teachers.dao.find(sql);
            if(list.size()!=0)
            {
                sql="select * from groups where name=(select name from Administrator where username='"+username+"' and password='"+password+"')";
                List<Groups> groupslist=Groups.groups.find(sql);
                setSessionAttr("groupslist", groupslist);
                redirect("/students");
            }
        }   
        String str="select * from message where school_id='"+username+"' and password='"+password+"'";
        List<students> student=students.students.find(str);
        System.out.println(student.toString());
        //验证学生登录身份
        if(student.size()!=0 )
        {
            str="select * from students where name=(select name from message where school_id='"+username+"' and PASSWORD='"+password+"')";
            List<students> stu=students.students.find(str);
            setAttr("student", stu);
            render("/message/message.jsp");
        }
    }
}

这是普通管理员的模块

package com.Permissions;

import com.jfinal.plugin.activerecord.Model;
//管理员模块
public class Groups extends Model<Groups> 
{
    public static final Groups groups=new Groups();

}

这是超级管理员登录的时能够看到的全部普通管理员基本信息模块

package com.Permissions;

import java.util.ArrayList;
import java.util.List;

import com.jfinal.core.Controller;

public class PermissionsGroups extends Controller 
{
    public void index()
    {
        List<Groups> groupslist=Groups.groups.find("select * from groups");
        setAttr("groups", groupslist);
        render("list.jsp");
    }
    public void form()
    {
        Groups group=Groups.groups.findById(getParaToInt(0));
        if(group==null)
        {
            render("form.jsp");
        }
        else
        {
            setAttr("group", group);
            render("form.jsp");
        }

    }
    public void add()
    {
        Groups group=getModel(Groups.class,"group");
        group.save();
        redirect("/PermissionsGroups");
    }
    public void edit()
    {
        form();
    }
    public void delete()
    {
        Groups.groups.deleteById(getParaToInt(0));
        index();
    }
    /**
     * 注销账号
     */
    public void logout()
    {
        redirect("/login");
    }
}

下面是超级管理员对普通管理员团队进行增删改查
接下来是前端显示的页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<script type="text/javascript">
    function add()
    {
        window.location.href="/students/form";  
    }
    function edit(id)
    {
        window.location.href="/students/edit/"+id;
    }
    function del(id)
    {
        window.location.href="/students/delete/"+id;
    }
    function logout()
    {
        window.location.href="/students/logout/";
    }
    
</script>
<body>
    <c:forEach items="${groupslist}" var="groupslist">
        <div><h1>欢迎${groupslist.name}</h1></div>
        <button <c:if test="${groupslist.permissions!='1'}">disabled="true"</c:if> onclick="add()">增加学生</button>
    </c:forEach>
        <button onclick="logout()">注销账号</button>
    <table border="2" width="80%">      
        <caption><h1>学生信息</h1></caption>
        <thead>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>备注</th>
        <th rowspan="2">操作</th>
        </thead>
        <tbody>
        <c:forEach items="${student}" var="student">
        <tr>
        <th>${student.name}</th>
        <th>${student.age}</th>
        <th>${student.sex}</th>
        <th>${student.remark}</th>
        <th>
        <c:forEach items="${groupslist}" var="groupslist">  
        <button <c:if test="${groupslist.permissions!='2'}">disabled="true"</c:if> onclick="edit(${student.id})">修改</button>
        <button <c:if test="${groupslist.permissions!='3'}">disabled="true"</c:if> onclick="del(${student.id})">删除</button>
        </c:forEach>
        </th>
        </tr>
        </c:forEach>
        </tbody>
            
        <tr>        
        <th colspan="5">总页数  ${pagination}/${page}    
        <a href="/students">首页</a>    
        <a href="/students/Previouspage/${pageNumber}-${pagination}">上一页</a>    
        <a href="/students/nextpage/${pageNumber}-${pagination}">下一页</a>    
        <a href="/students/trailerpage/">尾页</a>   
        <form action="/students/jumpPage/">
        <label>跳转到</label>
        <input type="text" name="number">
        <button type="submit">确定</button>
        </form>
        </th>
        </tr>
    </table>
    
    
      
</body>
</html>

这是form.jsp表单

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="/PermissionsGroups/add" method="post">    
    <label>姓名</label>
    <input type="text" name="group.name" value="${group.name}">
    <label>年龄</label>
    <input type="text" name="group.age" value="${group.age}">
    <div >
    <label>性别</label>
    <div>
    <input type="radio"  name="group.sex" <c:if test="${group.sex=='男'}">checked="checked"</c:if>value="男"> 男
    </div>
    <div>
    <input type="radio"   name="group.sex" <c:if test="${group.sex=='女'}">checked="checked"</c:if>value="女"> 女
    </div>
    </div>
    <div>
    <label>职务</label>
    <select name="group.duty">
        <option>选择职务</option>
        <option value="人力部部长" ${group.duty=='人力部部长'?'selected':''}>人力部部长</option>
        <option value="资源部部长" ${group.duty=='资源部部长'?'selected':''}>资源部部长</option>
        <option value="信息部部长" ${group.duty=='信息部部长'?'selected':''}>信息部部长</option>
    </select>
    </div>
    <div>
    <label>权限</label>
    <select name="group.permissions" ">
        <option>选择权限</option>
        <option value="1" ${group.permissions=='1'?'selected':''}>查看学生信息和增加学生</option>
        <option value="2" ${group.permissions=='2'?'selected':''}>查看学生信息和修改学生信息</option>
        <option value="3" ${group.permissions=='3'?'selected':''}>查看学生信息和删除学生</option>
    </select>
    </div>
    <label>备注</label>
    <textarea rows="10" cols="20" name="group.remark">${group.remark}</textarea>
    <button type="submit">提交</button>
    </form>
</body>
</html>

这是超级管理员登录界面

搜狗截图17年10月28日1011_1.png

接下面是各个管理员的权限

搜狗截图17年10月28日1019_2.png
搜狗截图17年10月28日1020_3.png
搜狗截图17年10月28日1020_4.png

接下面是源码链接(附上数据库): https://pan.baidu.com/s/1nuCZwWp 密码: bpxa
总结:其实刚开始做的时候没怎么想清楚要怎么做,就先做的先,后面慢慢摸索到技巧了,前面的东西要想规范化,就要全部修改。这个坏习惯一定会改!!!。这个简单权限管理系统思路就是

无标题.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,612评论 18 399
  • 一首歌里有一个故事,一首歌里有一种心情。 我正在听的这首歌:《나 혼자서》——《我一个人》 如果此刻,你也是一个人...
    沐暖雪阅读 197评论 0 1
  • 属性 声明一个属性时,会隐含地生成一个对应名称的实例变量和一对存取方法,其中实例变量会在变量名前加下划线 属性特性...
    u14e阅读 107评论 0 0
  • 清明假期过后一连几天的阴雨连绵不断,今早起来发现雨嘎然而止了。看来老弟是个有福气的人哦!老天都在帮他。 老弟的面馆...
    风的蔷薇阅读 893评论 3 7
  • 昨晚地铁回家,在过安检的时候看到这样一幕: 一位年青的地铁女安保,伸手拦住一位抱地着一个约五岁的男孩的中年男,中年...
    南昌阿波罗阅读 722评论 5 7