簡(jiǎn)單的權(quán)限管理系統(tǒng)

最近在網(wǎng)上學(xué)習(xí)了一些權(quán)限管理系統(tǒng),發(fā)現(xiàn)都差不多,只是復(fù)雜一些的權(quán)限管理系統(tǒng)分的更加細(xì)致唱歧,考慮的因素也越多。權(quán)限管理模塊就是為了管理用戶是否有權(quán)利訪問(wèn)某個(gè)權(quán)限,如果不能則拒絕訪問(wèn)颅崩。而我自己也做利用了jfinal做了一個(gè)簡(jiǎn)單的權(quán)限管理系統(tǒng)几于。小弟不精,可能還有些錯(cuò)誤沿后,請(qǐng)大家指明.
還有就是這里數(shù)據(jù)的表不對(duì)應(yīng)貼出來(lái)的代碼的表
數(shù)據(jù)庫(kù):
表1:super administrator (對(duì)應(yīng)代碼的teacher) 超級(jí)管理員的賬號(hào)密碼
表2:administrator 存儲(chǔ)普通的管理員的賬號(hào)密碼
表3:administrator_message (對(duì)應(yīng)代碼的groups) 普通管理員的基本信息
表4:students
表5:student_message (對(duì)應(yīng)代碼的message)
表創(chuàng)建對(duì)應(yīng)的id,name,age,sex,remark屬性等

超級(jí)管理員inori:可以對(duì)學(xué)生進(jìn)行增刪改查,對(duì)其他管理員進(jìn)行權(quán)限分配
普通的管理員miku:只能查看學(xué)生信息和增加學(xué)生
普通的管理員Alan:只能查看學(xué)生信息和修改學(xué)生信息
普通的管理員shiro:只能查看學(xué)生信息和刪除學(xué)生
學(xué)生:只能查看自己的基本信息

我是在上兩篇jfinal的基礎(chǔ)上進(jìn)行修改,只貼權(quán)限管理的部分代碼
登錄時(shí)的驗(yàn)證

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); 
        //驗(yàn)證超級(jí)管理員身份
        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());
        //驗(yàn)證學(xué)生登錄身份
        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();

}

這是超級(jí)管理員登錄的時(shí)能夠看到的全部普通管理員基本信息模塊

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();
    }
    /**
     * 注銷(xiāo)賬號(hào)
     */
    public void logout()
    {
        redirect("/login");
    }
}

下面是超級(jí)管理員對(duì)普通管理員團(tuán)隊(duì)進(jìn)行增刪改查
接下來(lái)是前端顯示的頁(yè)面:

<%@ 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()">增加學(xué)生</button>
    </c:forEach>
        <button onclick="logout()">注銷(xiāo)賬號(hào)</button>
    <table border="2" width="80%">      
        <caption><h1>學(xué)生信息</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">總頁(yè)數(shù)  ${pagination}/${page}    
        <a href="/students">首頁(yè)</a>    
        <a href="/students/Previouspage/${pageNumber}-${pagination}">上一頁(yè)</a>    
        <a href="/students/nextpage/${pageNumber}-${pagination}">下一頁(yè)</a>    
        <a href="/students/trailerpage/">尾頁(yè)</a>   
        <form action="/students/jumpPage/">
        <label>跳轉(zhuǎn)到</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>職務(wù)</label>
    <select name="group.duty">
        <option>選擇職務(wù)</option>
        <option value="人力部部長(zhǎng)" ${group.duty=='人力部部長(zhǎng)'?'selected':''}>人力部部長(zhǎng)</option>
        <option value="資源部部長(zhǎng)" ${group.duty=='資源部部長(zhǎng)'?'selected':''}>資源部部長(zhǎng)</option>
        <option value="信息部部長(zhǎng)" ${group.duty=='信息部部長(zhǎng)'?'selected':''}>信息部部長(zhǎng)</option>
    </select>
    </div>
    <div>
    <label>權(quán)限</label>
    <select name="group.permissions" ">
        <option>選擇權(quán)限</option>
        <option value="1" ${group.permissions=='1'?'selected':''}>查看學(xué)生信息和增加學(xué)生</option>
        <option value="2" ${group.permissions=='2'?'selected':''}>查看學(xué)生信息和修改學(xué)生信息</option>
        <option value="3" ${group.permissions=='3'?'selected':''}>查看學(xué)生信息和刪除學(xué)生</option>
    </select>
    </div>
    <label>備注</label>
    <textarea rows="10" cols="20" name="group.remark">${group.remark}</textarea>
    <button type="submit">提交</button>
    </form>
</body>
</html>

這是超級(jí)管理員登錄界面

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

接下面是各個(gè)管理員的權(quán)限

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

接下面是源碼鏈接(附上數(shù)據(jù)庫(kù)): https://pan.baidu.com/s/1nuCZwWp 密碼: bpxa
總結(jié):其實(shí)剛開(kāi)始做的時(shí)候沒(méi)怎么想清楚要怎么做沿彭,就先做的先,后面慢慢摸索到技巧了尖滚,前面的東西要想規(guī)范化喉刘,就要全部修改。這個(gè)壞習(xí)慣一定會(huì)改F崤D郎选!撼唾。這個(gè)簡(jiǎn)單權(quán)限管理系統(tǒng)思路就是

無(wú)標(biāo)題.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末廉邑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子倒谷,更是在濱河造成了極大的恐慌蛛蒙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤愁,死亡現(xiàn)場(chǎng)離奇詭異牵祟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)抖格,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)课舍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人他挎,你說(shuō)我怎么就攤上這事筝尾。” “怎么了办桨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵筹淫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呢撞,道長(zhǎng)损姜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任殊霞,我火速辦了婚禮摧阅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绷蹲。我一直安慰自己棒卷,他們只是感情好顾孽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著比规,像睡著了一般若厚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜒什,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天测秸,我揣著相機(jī)與錄音,去河邊找鬼灾常。 笑死霎冯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的钞瀑。 我是一名探鬼主播肃晚,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼仔戈!你這毒婦竟也來(lái)了关串?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤监徘,失蹤者是張志新(化名)和其女友劉穎晋修,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體凰盔,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墓卦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了户敬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片落剪。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尿庐,靈堂內(nèi)的尸體忽然破棺而出忠怖,到底是詐尸還是另有隱情,我是刑警寧澤抄瑟,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布凡泣,位于F島的核電站,受9級(jí)特大地震影響皮假,放射性物質(zhì)發(fā)生泄漏鞋拟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一惹资、第九天 我趴在偏房一處隱蔽的房頂上張望贺纲。 院中可真熱鬧,春花似錦褪测、人聲如沸猴誊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)稠肘。三九已至福铅,卻和暖如春萝毛,著一層夾襖步出監(jiān)牢的瞬間项阴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工笆包, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留环揽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓庵佣,卻偏偏與公主長(zhǎng)得像歉胶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子巴粪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容