第一篇博客关于easyUI和shiro使用时遇到的问题

easyUI和shiro同时使用时,shiro只对action进行登录角色判断,easyUI是先渲染div再发送URL请求.如果想在添加权限时做角色允许判断怎么解决?

解决办法:使用cookie解决,在前端HTML增加一个逻辑判断

首先在HTML中添加<script type='text/javascript' src='../jquery.cookie.js'></scrip>

本人是封装了一个custom.js的一个文件用于引用:如下图:

document.write("<link rel='stylesheet' type='text/css' href='../easyuijscss/easyui.css'>" +
        "<link rel='stylesheet' type='text/css' href='../easyuijscss/icon.css'>" +
        "<link rel='stylesheet' type='text/css' href='../easyuijscss/demo.css'>" +
        "<script type='text/javascript' src='../easyuijscss/jquery.min.js'></script>" +
        "<script type='text/javascript' src='../easyuijscss/jquery.cookie.js'></script>" +
        "<script type='text/javascript' src='../easyuijscss/jquery.easyui.min.js'></script>" +
        "<script type='text/javascript' src='../easyuijscss/easyui-lang-zh_CN.js'></script>");



function getPath() {
    var pathName = document.location.pathname;
    var index = pathName.substr(1).indexOf("/");
    var result = pathName.substr(0, index + 1);
    return document.location.protocol + '//' + document.location.host + result;
}

var role=null;

前端代码:

<table id="tt">
    <!-- 工具栏 -->
    <div id="toolbar" style="margin: 2px">
        <fieldset style="margin: 10px;">
            <form id="sff">
第一步: <a class="easyui-linkbutton" iconCls="icon-add" plain="false" onclick="openNewRecord()">添加新记录</a> <a id="refresh" class="easyui-linkbutton" iconCls="icon-reload" onclick="refreshTable()">刷新</a> <a class="easyui-linkbutton" iconCls="icon-remove" plain="false" onclick="openRemoveRecord()">批量删除</a> &nbsp; <span>工厂: </span><input id="mb_factory_name" style="width: 70px;border-radius:2px;"> <span>款号: </span><input id="mb_style_num" style="width: 70px;border-radius:2px;"> <a class="easyui-linkbutton" iconCls="icon-search" plain="false" onclick="searchRecord()"></a> </form> </fieldset> <script type="text/javascript"> //刷新表单 function refreshTable() { $("#tt").datagrid("reload"); }
第二步:
//用户角色 $(function(){ role =$.cookie('roleName'); alert(role); }) 第三步: function openNewRecord() { if(role!="临时用户"){ console.info("打开添加界面"); $("#add").dialog('open'); } } function searchRecord() { console.info("进行搜索"); $("#tt").datagrid('load',{ mb_factory_name: $('#mb_factory_name').val(), mb_style_num: $('#mb_style_num').val() }); } </script> </div> </table>

controller层代码:

/**
     * shiro框架的用户登录认证
     */
    @RequestMapping("/login")
    public String login(String username,String password,HttpServletResponse response){
        User login = userService.login(username);
        UsernamePasswordToken token=new UsernamePasswordToken(username,password);
        try{
            SecurityUtils.getSubject().login(token);
            
            //用户信息存入cookie
            Role selectByUsername = userService.selectByUsername(username);
            Cookie cookie = new Cookie("roleName", selectByUsername.getRole_name());
            cookie.setMaxAge(Integer.MAX_VALUE);
      //要设置cookie保存路径/应用程序名称/HTML所在的文件夹名称
            cookie.setPath("/ieAnalyzeApplication/hsie");
            response.addCookie(cookie);
        }catch (Exception e) {
            return "redirect:/login.jsp";
        }
        return "redirect:/hsie/managersystem.html";
    }

猜你喜欢

转载自www.cnblogs.com/lpy-pingyuan/p/9336056.html