欢迎各位大牛指教

登陆加权限控制

角色权限配置:

1.在我们设置用户登录时,同时会因为用户不同而设置不同的用户权限,而因为用户权限不同我们所需要展示的内容也有所不同:
首先我们需要设计五张表:
用户账号表,用户职位表,职位权限表,用户账号-用户职位中间表,用户职位-职位权限中间表
其中两张中间表所对应的分别是它所关联表的主键字段;
2.登陆
在用户登陆时根据我们设置的验证条件,对他所进行的操作进行判断验证,通过查询用户表,比较用户所输入的账号密码,用户状态是否符合登陆条件而进行相对应的提示,如果所有条件都正确则允许登    陆。而在登陆这一块主要有两大技术点:
(一)拦截器【防止用户不通过登陆而直接通过输入URL的方式访问页面】
拦截器又分为登陆拦截和权限拦截两方面:
1.登陆拦截主要是防止用户不登陆而通过URL访问,既在用户登录成功后,我们将这个用户的信息放在session会话中,在拦截器中判断session是否为空,如果为空则跳转到登陆页面,如不为空,则说明用户已登陆,可以正常访问。
2.但是在用户登录后,session中是有值得,而因为我们权限控制每个用户可以查看的内容都不相同,但这时如果用户登录后再通过URL去访问他所没有权限的页面,由于session中是有值的,所以拦截器不会对他拦截,为了防止用户访问他所不具备权限的页面,我们需要再进行一次拦截首先我们需要根据登陆用户的信息去通过表关联关系查询他所拥有的权限以及所可以访问的URL,再拿他所访问的URL与之比较,如果他又这个权限则放行,负责跳转登陆页面或者提示权限不够。
(二)角色权限【针对不同用户所展示的内容不同既权限控制】
在用户登录后,根据用户所具备的权限展示相应的内容,在这里我们使用了一个插件Ztree(树形图),根据Ztree的特点,我们通过用户ID去结合表关系进行查询,再将根据用户ID得到的这个集合放在Ztree下展示,会根据用户权限不同展示不同目录。
Ztree的使用:
(一)引入 Ztree插件:
<link rel="stylesheet" href="<%=request.getContextPath()%>/js/zTree_v3-master/css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="<%=request.getContextPath()%>/js/zTree_v3-master/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/zTree_v3-master/js/jquery.ztree.core.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/zTree_v3-master/js/jquery.ztree.excheck.min.js"></script>
(二)需要有一个div或者ul去展示
body>
<form id="ztree-update-form">
    <div id="ztreeDemo" class="ztree"></div>
</form>
</body>
(三)得到数据
var setting = {
              check: {      //多选框
                    enable: true,
                chkboxType : { "Y": "s", "N": "s"}
                },
        data : {
            simpleData : {    
 //树的展开或折叠
                enable : true
            }
        }
    };
    var ztreeNodes = ${citylist}
    $(document).ready(function() {
$.fn.zTree.init($("#ztreeDemo"), setting, ztreeNodes);
        treeObj.expandAll(true); 
 
    })
3.文件管理:
文件上传时,我们使用了artDialog-master插件,首先导入插件
引入:<link rel="stylesheet" href="<%=request.getContextPath()%>/js/uploadify/uploadify.css" type="text/css">
<script type="text/javascript" src="<%=request.getContextPath()%>/js/uploadify/jquery.uploadify.min.js" charset="utf-8"></script>
 
<link rel="stylesheet" href="<%=request.getContextPath()%>/js/artDialog-master/css/ui-dialog.css">
<script src="<%=request.getContextPath()%>/js/artDialog-master/dist/dialog-plus-min.js"></script>
在js文件中直接使用var add_from = dialog({
                title: '增加文件夹',
                modal:true,
                content: data,
                okValue: '确 定',
                ok: function () {
                    this.title('正在提交..',1);
                },
                cancelValue: '取消',
                cancel: function () {
                    this.title('已经取消..',1);
                }
            });
使用插件主要是用户体验度高,使页面更加美观,而且比较方便。
其次:
用户管理模块:
主要包括添加新用户,删除用户及修改用户信息,通过中间表关联关系,赋予用户相对应的等级或职位
在用户密码管理我们使用了Demo5,在后台将用户设置的字符串密码编译为32位随机字符串形式,更加保证了用户的账号安全;而Demo5软件的使用有:
1,导入JavaMD5.jar
2直接在后台将接受的字符串进行转换:
if(userModel.getUserpassword() !=null ){
        Mademd5 md = new Mademd5();
        userModel.setUserpassword(md.toMd5(userModel.getUserpassword()));
    }
最后:
在角色表这里我们通过表关系给予角色相对应的权限,以已权限的修改,角色的删除,
其中权限修改与登陆做法相似,所不同的是我们将模块所有的权限全部查出,然后使用Ztree,以树的形式更加直观的展示,然后根据用户ID查询他已拥有的权限,进行回显,方便用户使用{查询全部权限时,再根据这个角色的ID去进行查询,然后通过比较if(map.get("id").equals(cujlist.get(k).getTid())){
                    map.put("checked", "true");
                }来使他达到回显的目的}
比较需要注意的是Ztree只支持json格式所以我们进行查询时需注意对他进行格式转换
 list = shareService.SelectCity();
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setExcludes(new String[] { "handler", "hibernateLazyInitializer" });
        citylist = JSONSerializer.toJSON(list, jsonConfig).toString();    
return getHibernateTemplate()
            .find("select new map(t.tid as id,t.tname as name,t.ttid as pId,t.url as url,t.target as target) from CityModel t");
posted @ 2016-08-23 13:19  夏沫秋至  阅读(516)  评论(0编辑  收藏  举报