简单的权限管理系统

最近在网上学习了一些权限管理系统,发现都差不多,只是复杂一些的权限管理系统分的更加细致,考虑的因素也越多。权限管理模块就是为了管理用户是否有权利访问某个权限,如果不能则拒绝访问。而我自己也做利用了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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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