智能小程序

day6

1. 登录功能

1.1. 对新添加的员工进行密码进行加密处理

	 1. 1.2
    @ResponseBody
    public JsonResult save(Employee employee){
        //添加的时候,对密码进行加密
        employee.setPassword(MD5Utils.creatPwd(employee.getPassword()));
        return saveAndUpdate(employee);
    }

1.2添加登录页面

1.3修改applicationContext-shiro.xml

<!--真正的权限过滤器,起作用的就是它-->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!--引入权限管理器-->
        <property name="securityManager" ref="securityManager"/>
        <!--如果没有登录的时候,就会进入下面这个路径-->
        <property name="loginUrl" value="/login"/>
        <!--如果登录成功就会进入该页面(没什么用)-->
        <property name="successUrl" value="/mian"/>
        <!--没有权限的时候,就会进入的页面-->
        <property name="unauthorizedUrl" value="/s/unauthorized.jsp"/>

1.4添加静态资源的放行

public class FilterChainDefinitionMapFactory {

    public Map<String,String> createMap(){
        Map<String,String> map=new LinkedHashMap<>();
        //登录页面放行,不登录就可以访问的页面
        map.put("/login","anon");
        map.put("*.js","anon");
        map.put("*.css","anon");
        map.put("/css/**","anon");
        map.put("/js/**","anon");
        map.put("/easyui/**","anon");
        map.put("/images/**","anon");
        //添加权限拦截数据,没有拦截的数据都可以访问
        map.put("/s/perission.jsp","perms[employee:index]");
        //必须要登录后才可以访问的页面
        map.put("/** ","authc");
        return map;
    }
}

2. 权限 domain部分

2.1实现登录端密码的验证

 Employee loginUser = employeeService.findByUsername(username);
        if(loginUser==null){
            return null; //该用户名不存在
        }

2.2LoginController:登录功能并且完成json格式的数据返回

 //当使用localhost/login登录的时候,使用的get请求,默认就会走这里直接可以访问的
    @RequestMapping(value = "/login",method = RequestMethod.GET)
    public String index(){
        return "login";
    }
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
    public JsonResult index(String username, String password){
    System.out.println(username);
        //得到当前用户
    Subject subject = SecurityUtils.getSubject();
    //拿到令牌
    UsernamePasswordToken token=new UsernamePasswordToken(username,password);
    //登录
    try {
        subject.login(token);
        //没有用户的时候
    } catch (UnknownAccountException e) {
        System.out.println("没有用户");
        e.printStackTrace();
       return new JsonResult(false,"用户名或者密码错误");
    }catch (IncorrectCredentialsException e) {
        System.out.println("密码错误");
        e.printStackTrace();
    }catch (AuthenticationException e) {
        System.out.println("其他异常");
        e.printStackTrace();
        return new JsonResult(false,"用户名或者密码错误");
    }
    //登录成功后,需要跳转的页面
    return new JsonResult();
}
@RequestMapping("/logout")
 public String logout(){
    Subject subject = SecurityUtils.getSubject();
    //退出登录
    subject.logout();
    return "redirect:/s/login.jsp";
}
}

2.3login.jsp:登录功能

<script type="text/javascript">
    //模拟过时页面失效需要重新登录
    if(top!=window){
        window.location.href="/login";
    }
    //使用jquery的方式添加事件
   $(function () {
       $("#botton").on("click", function () {
           $("#loginid").form("clear");
       })
   })
    //注意这个是普通事件,上面和下面两个按钮的区别  普通事件和easyui的事件不能混合用
 function submitForm() {
           var isValid = $("#loginid").form('validate');
           console.debug(isValid)
           if (!isValid){
               $.messager.alert('提示',"没有填写账号或者密码",'info');
               //返回值为false阻止提交
               return ;
           }else{
               $('#loginid').form('submit', {
                   url: "/login",
                   onSubmit: function (){
                       // do some check
                       // return false to prevent submit;
                   },
                   success: function (data){
                       var result = JSON.parse(data);
                       if (result.success) {

                      //加载主页面(注意这个地方是***href***  注意注意)
                           window.location.href = "/main";
                       } else {
                           $.messager.alert('提示', result.msg);
                       }
                   }
               });
           }

 }
       //监听键盘
       $(document.documentElement).on("keyup", function(event) {
           //console.debug(event.keyCode);
           var keyCode = event.keyCode;
           console.debug(keyCode);
           if (keyCode === 13) { // 捕获回车通常我们采用keyCode 值进行判断
               submitForm(); // 提交表单
           }
       });

</script>
<BODY>
<div id="login">
    <h1>Login</h1>
    <form id="loginid" method="post" action="/login" class="easyui-form" >
        <input type="text" required="required" placeholder="用户名" name="username"></input>
        <input type="password" required="required" placeholder="密码" name="password"></input>
        <a id="bottdeng" class="but"class="easyui-linkbutton" onclick="submitForm();">登录</a>
        <a id="botton" class="but"class="easyui-linkbutton" >重置</a>
    </form>
</div>

3.角色管理(页面功能)

3.1准备角色数据显示(role.jsp)

3.1.1.role.js


```c
//遍历权限
 function permiFormatter(v){
    //遍历
     var name="";
    for(var p of v){
      name+=p.name+" ";
    }
return name;
 }
$(function () {
    //常用的元素在这里先获取
    var datagrid =$("#datagrid");
    var searchform = $("#searchform");
    var editDialog = $("#editDialog");
    var roleForm=$("#roleForm");

$("*[data-method]").on("click",function () {
  var methodName=$(this).data("method");
  //调用方法
    itsource[methodName]();
});

    itsource={
     add(){
         //弹出用户管理编辑框,并且第一次都是居中
         editDialog.dialog("open").dialog("center");
         roleForm.form("clear");
         $('#someDatagrid').datagrid("loadData",[])


    },
    update(){

        //数据的回显
        //获得选中的行信息
        var row=datagrid.datagrid('getSelected')
        //判断改行是否存在,不存在给出提示信息
        if(!row){
            $.messager.alert('提示','请先选中一行','warning');
            //结束后面的方法
            return;
        }
        //弹出用户管理编辑框,并且第一次都是居中
        editDialog.dialog("open").dialog("center");
        //显示数据(这里只能显现form中的值)
        roleForm.form('load',row);
        //回显detagrid'中的值()
        //注意::这里表示复制一个数组
       var prms= [...row.permissions]
        $('#someDatagrid').datagrid("loadData",prms);

    },
    remove(){
            //获得选中的行信息
            var row=datagrid.datagrid('getSelected')
        //判断改行是否存在,不存在给出提示信息
        if(!row){
            $.messager.alert('提示','请先选中一行','warning');
            //结束后面的方法,后面的代码不再执行
            return;
        }
        //判断是否要删除
        $.messager.confirm('确认','您确认想要删除记录吗?',function(r){
                    if (r){
                        //发送ajax请求到后台进行删除操作
                        //第一个参数:为请求地址   第二个参数:传递的参数值  第三个参数:回调函数的返回值
                        $.get("/role/delete",{id:row.id},function (result) {
                            if(result.success){
                                //删除成功需要刷新页面,不重新跳转到第一页
                                datagrid.datagrid('reload')

                            }else{
                                //删除失败,返回一条错误信息
                                $.messager.alert('失败',`删除失败,原因:${result.msg}`,'error');

                            }
                        });
                    }
        });
    },
    search(){
        //拿到查询条件(只有导入拓展js文件才可以使用,目的将内容转化为json格式)
        var parm= searchform.serializeObject();
        //查询值
        datagrid.datagrid('load',parm)
        },
        //添加框的关闭按钮
        close(){
            editDialog.dialog("close");
        },
        //添加框的保存按钮
    save(){
         //得到表单的数据,或者通过给改行添加id,通过id去拿值
        var row=roleForm.val();
        if(row.id){
            //当表单里面有id值的时候,执行修改,
            url="/role/update?_cmd=update";
        }else{
            url="/role/save";
        }
            //提交表单
        var isValid = roleForm.form('validate');
        if (!isValid){
            //返回值为false阻止提交
            return ;
        }else {
            roleForm.form('submit', {
                url: url,
                //提交一些额外的数据
                onSubmit: function (param) {
                    //拿到当前用户的所有权限
                    var rows =  $('#someDatagrid').datagrid("getRows");
                    for(var i=0;i<rows.length;i++ ){
                        //  // param.permissions is undefined
                        var p=rows[i];
                        //另外一种方式: param["permissions["+i+"].id"] =p.id;
                        param[`permissions[${i}].id`]=p.id
                    }
                },
                success: function (data) {
                    var result = JSON.parse(data);
                    if (result.success) {
                        //保存成功需要刷新页面,不重新跳转到第一页
                        datagrid.datagrid('reload')

                    } else {
                        //保存失败,返回一条错误信息
                        $.messager.alert('保存', `保存,原因:${result.msg}`, 'error');

                    }
                }
            });
            //关闭添加框
            itsource.close();
            //重新刷新页面数据
        }
        },
    reload(){
         //首先清除表单里面的搜索内容
        searchform.form("clear");
    },
    addDatagrid(index,row){
        //1.拿到当前角色的所有行数据
        var rows =  $('#someDatagrid').datagrid("getRows");
        //遍历当前行
        for(var r of rows) {
            if(r.id==row.id){
                $.messager.alert('提示','当前行已经存在','info');
                return;
            }
        }
        //把相应的数据追加进去
        $('#someDatagrid').datagrid("appendRow",row);

    },
    //方法:删除一行数据,根据索引值
    removeDatagrid(index,row){
        $('#someDatagrid').datagrid("deleteRow",index)
    }

}
	//调用方法,此时的方法后面不需要加()
    $('#allDatagrid').datagrid({
        onDblClickRow:itsource.addDatagrid

    });
    //左边列表进行删除数据,双击删除
    $('#someDatagrid').datagrid({
        onDblClickRow:itsource.removeDatagrid

    });
});

3.2添加角色

<div id="cc" class="easyui-layout" style="width:100%;height:450px;">
            <div data-options="region:'west'" style="width:50%;">
                <table id="someDatagrid" class="easyui-datagrid" style="width:400px;height:250px"
                       data-options="fitColumns:true,singleSelect:true,fit:true">
                    <thead>
                    <tr>
                        <th data-options="field:'name',width:100">名称</th>
                        <th data-options="field:'url',width:100">地址</th>
                        <th data-options="field:'sn',width:100,align:'right'">权限</th>
                    </tr>
                    </thead>
                </table>
            </div>
            <div data-options="region:'center'" >
                <table id="allDatagrid" class="easyui-datagrid"
                       data-options="url:'/permission/list',fitColumns:true,singleSelect:true,fit:true">
                    <thead>
                    <tr>
                        <th data-options="field:'name',width:100">名称</th>
                        <th data-options="field:'url',width:100">地址</th>
                        <th data-options="field:'sn',width:100,align:'right'">权限</th>
                    </tr>
                    </thead>
                </table>
            </div>
        </div>

3.3保存数据

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

small__stones

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值