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,完善越多,對框架的了解就越多

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM