最近在网上学习了一些权限管理系统,发现都差不多,只是复杂一些的权限管理系统分的更加细致,考虑的因素也越多。权限管理模块就是为了管理用户是否有权利访问某个权限,如果不能则拒绝访问。而我自己也做利用了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 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 groupslist=Groups.groups.find(sql);
setSessionAttr("groupslist", groupslist);
redirect("/students");
}
}
String str="select * from message where school_id='"+username+"' and password='"+password+"'";
List 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 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
{
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 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"%>
Insert title here
欢迎${groupslist.name}
学生信息
姓名
年龄
性别
备注
操作
${student.name}
${student.age}
${student.sex}
${student.remark}
总页数 ${pagination}/${page}
首页
上一页
下一页
尾页
这是form.jsp表单
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Insert title here
这是超级管理员登录界面
接下面是各个管理员的权限
接下面是源码链接(附上数据库): https://pan.baidu.com/s/1nuCZwWp 密码: bpxa
总结:其实刚开始做的时候没怎么想清楚要怎么做,就先做的先,后面慢慢摸索到技巧了,前面的东西要想规范化,就要全部修改。这个坏习惯一定会改!!!。这个简单权限管理系统思路就是