NFine中权限判断出错的问题
问题描述:登录后点击栏目一,弹出了窗口一,再点击栏目二,弹出了窗口二,然后再点击窗口一,再执行窗口一中的操作时,发现已没有任何权限,调试后发现在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);
}
},