禁止通过URL直接访问应用页面的
本帖最后由 successit 于 2022-10-9 10:39 编辑我们做的所有应用,设置权限一般有2种,一种是通过在服务端设置菜单及页面权限来控制应用各账号登录后的访问权限,当然还有一种是设置数据库的数据权限,这几种用的最多的估计就是菜单权限了,页面权限及数据权限,用的人都不多,因为设置起来比较繁琐
如上,如果只设置了菜单权限,那就会存在一个隐患,就是用户可以通过地址加页面名称的方式,直接进入到没有菜单权限对应的页面中,就是说菜单权限就失去了他的作用(不论是自带的菜单还是EL菜单),针对这种情形,我自己先弄了一个解决办法,也许大神们有更好的办法,大家一起交流交流,当然如果官方可以内置这个功能就最好了。。。
因为我的应用页面已经很多很多了,所以去到每个页面增加验证权限,有点不现实,不符合我一直很懒的精神,所以几经周折,用了全局JS来实现
PS:作为基本JS小白的我,也是在论坛里翻了好多资料借鉴才搞出来这么一段简单的东西
//请在这个方法中写每个页面加载时的逻辑
function pageLoaded()
{
const referrer = document.referrer
const pagename = Forguncy.Page.getPageName()
if(referrer === '' & pagename !="主页" & pagename !="首页" & pagename !="FGC_登录") {
alert("对不起,当前页面访问方式不合法!");
window.location.href="https://www.baidu.com";
}
}
//用于第一页面加载
Forguncy.Page.ready(function(){
pageLoaded();
});
//用于非第一次页面加载
function historyStatePushed(){
setTimeout(function(){
pageLoaded();
}, 1000);
}
var originPushState = window.history.pushState;
window.history.pushState = function(){
originPushState.apply(this, arguments);
historyStatePushed();
};
:i0tw: 不是很稳妥,还是建议配置一下页面权限
谢总的建议还是很中肯的,限制访问方式确实只能算预防,不能根治,页面权限更加有保障。我这边主要是页面太多,角色也多,利用官方的权限体系去设置,太麻烦,加上现在用了EL菜单的数据库方式,在菜单权限上基本脱离了自带的权限体系,所以只能用这种方式暂时预防下,页面基本授权给登录用户 :lol 既然你都已经把权限数据库化了.为啥还要仰仗js去处理页面鉴权?
我用的是模板命令...每个页面不用去输入那么多东西,就添加一个命令就可以了.
桂花酒酿丸子 发表于 2022-10-10 09:50
既然你都已经把权限数据库化了.为啥还要仰仗js去处理页面鉴权?
我用的是模板命令...每个页面不用去输入那 ...
老哥,你的这个方法我也想过,主要是懒啊,我页面多了,就是每个页面都要去改下,这个需要时间的,全局JS可以暂时解决我这个问题,你的方法,后面我也会逐步去加上的,包括增删改查的权限,都通过自有数据库里的权限去设定 桂花酒酿丸子 发表于 2022-10-10 09:50
既然你都已经把权限数据库化了.为啥还要仰仗js去处理页面鉴权?
我用的是模板命令...每个页面不用去输入那 ...
你这权限方法非常好及通用的,烦请有空时,你再详细分享一下,最好能有工程示列文档,谢谢!
:mj72:
桂花酒酿丸子 发表于 2022-10-10 09:50
既然你都已经把权限数据库化了.为啥还要仰仗js去处理页面鉴权?
我用的是模板命令...每个页面不用去输入那 ...
求分享DEMO!!!感谢万分!!!
菜单、页面、库、单元格等权限一直很让人头疼!
官方给的解决方案要一个一个弄,有点力不从心!
页:
[1]