問題描述:登錄后(除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,完善越多,對框架的了解就越多