zoukankan      html  css  js  c++  java
  • NFine中权限判断出错的问题

    问题描述:登录后(除admin账号外,admin不做权限检测)点击栏目一,弹出了窗口一,再点击栏目二,弹出了窗口二,然后再点击窗口一,再执行窗口一中的操作时,发现已没有任何权限,调试后发现在HandlerAuthorizeAttribute这个类中

            private bool ActionAuthorize(ActionExecutingContext filterContext)
            {
                var operatorProvider = OperatorProvider.Provider.GetCurrent();
                var roleId = operatorProvider.RoleId;
                var moduleId = WebHelper.GetCookie("nfine_currentmoduleid");
                var action = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"].ToString();
                return new RoleAuthorizeApp().ActionValidate(roleId, moduleId, action);
            }

    moduleId这个值取的不对,又转到前台indextab.js中

            addTab: function () {
                $("#header-nav>ul>li.open").removeClass("open");
                var dataId = $(this).attr('data-id');
                if (dataId != "") {
                    top.$.cookie('nfine_currentmoduleid', dataId, { path: "/" });
                }
                var dataUrl = $(this).attr('href');
                var menuName = $.trim($(this).text());
                var flag = true;

    发现在这里对cookie('nfine_currentmoduleid')赋值,接着查看点击窗口选项卡的事件

            activeTab: function () {
                var currentId = $(this).data('id');
                if (!$(this).hasClass('active')) {
                    $('.mainContent .NFine_iframe').each(function () {
                        if ($(this).data('id') == currentId) {
                            $(this).show().siblings('.NFine_iframe').hide();
                            return false;
                        }
                    });
                    $(this).addClass('active').siblings('.menuTab').removeClass('active');
                    $.nfinetab.scrollToTab(this);
                }
            },

    发现并没有对cookie的赋值操作,所以找到了问题所在,但是如何传递该参数,尝试后的解决办法是回到addTab方法中

            addTab: function () {
                $("#header-nav>ul>li.open").removeClass("open");
                var dataId = $(this).attr('data-id');
                if (dataId != "") {
                    top.$.cookie('nfine_currentmoduleid', dataId, { path: "/" });
                }
                var dataUrl = $(this).attr('href');
                var menuName = $.trim($(this).text());
                var flag = true;
                if (dataUrl == undefined || $.trim(dataUrl).length == 0) {
                    return false;
                }
                $('.menuTab').each(function () {
                    if ($(this).data('id') == dataUrl) {
                        if (!$(this).hasClass('active')) {
                            $(this).addClass('active').siblings('.menuTab').removeClass('active');
                            $.nfinetab.scrollToTab(this);
                            $('.mainContent .NFine_iframe').each(function () {
                                if ($(this).data('id') == dataUrl) {
                                    $(this).show().siblings('.NFine_iframe').hide();
                                    return false;
                                }
                            });
                        }
                        flag = false;
                        return false;
                    }
                });
                if (flag) {
                    var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '" data-realid="' + dataId + '">' + menuName + ' <i class="fa fa-remove"></i></a>';
                    $('.menuTab').removeClass('active');
                    var str1 = '<iframe class="NFine_iframe" id="iframe' + dataId + '" name="iframe' + dataId + '"  width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';
                    $('.mainContent').find('iframe.NFine_iframe').hide();
                    $('.mainContent').append(str1);
                    $.loading(true);
                    $('.mainContent iframe:visible').load(function () {
                        $.loading(false);
                    });
                    $('.menuTabs .page-tabs-content').append(str);
                    $.nfinetab.scrollToTab($('.menuTab.active'));
                }
                return false;
            },

    在新建Tab的时候,增加一个参数 data-realid,再回到激活事件中,直接为cookie赋值就大功告成了。

            activeTab: function () {
                var currentId = $(this).data('id');
                if (!$(this).hasClass('active')) {
                    top.$.cookie('nfine_currentmoduleid', $(this).data('realid'), { path: "/" });
                    $('.mainContent .NFine_iframe').each(function () {
                        if ($(this).data('id') == currentId) {
                            $(this).show().siblings('.NFine_iframe').hide();
                            return false;
                        }
                    });
                    $(this).addClass('active').siblings('.menuTab').removeClass('active');
                    $.nfinetab.scrollToTab(this);
                }
            },

    该框架总的来说对初学者有很大的帮助,尤其是各种Bug,完善越多,对框架的了解就越多

  • 相关阅读:
    PDF上添加水印
    java调用POI读取Excel
    搭建Linux的VMware Workstation Pro
    js中两种定时器的设置及清除
    SUI使用经验
    List集合与Array数组之间的互相转换
    jquery操作select
    jquery操作CheckBox
    时间格式
    java 获取路径的各种方法
  • 原文地址:https://www.cnblogs.com/wangbg/p/6392086.html
Copyright © 2011-2022 走看看