FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
12
返回列表 发新帖
楼主: 898806387

如何避免用户绕开tree,直接敲地址进子页面

[复制链接]
 楼主| 发表于 2017-7-2 11:33:07 | 显示全部楼层
zy32002 发表于 2017-7-1 09:56
再有cookie都可以伪造的,不安全不推荐

用cookie是因为session容易丢,会在这方面改进一下,比如使用数据库存session
 楼主| 发表于 2017-7-2 11:39:16 | 显示全部楼层
zy32002 发表于 2017-7-1 09:53
你怎么标记? url直接能访问到,怎么判断是否可以有权限。我一个普通员工直接财务页面操作,这安全??
再 ...

我已经说了怎么标记的思路,也写了实现方法。现在的问题是navigateurl优先于nodecommand执行而无法给标记赋值,跟tree当然有关。所以请教大家有没有别的方案。请:1没必要评论需求的合理性,2看完别人的帖子再评论,3应该讨论的是技术上的实现方法,而不是别的。
发表于 2017-7-3 09:20:52 | 显示全部楼层
898806387 发表于 2017-7-2 11:39
我已经说了怎么标记的思路,也写了实现方法。现在的问题是navigateurl优先于nodecommand执行而无法给标记 ...

1 首先我们没有你的环境,不知道什么问题,再有你没说清楚。
2 我很负责的告诉你我已经认真的看你的帖子。你这问题就是 “怎么跳窗户进屋子?” 我们正常人当然会问为什么不走门。
3 如果是session丢失的问题,可以设置把session的加密的值和失效的时间放入到cookie里,从新写回到session。
navigateurl只是属性,我不确定在这个属性里注入js会不会好用,具体看js生成的代码。这2种方式,我更倾向于cookie里从写session
 楼主| 发表于 2017-7-3 13:02:09 | 显示全部楼层
zy32002 发表于 2017-7-3 09:20
1 首先我们没有你的环境,不知道什么问题,再有你没说清楚。
2 我很负责的告诉你我已经认真的看你的帖子 ...

1  2、3楼有详细的说明,还有代码,虽然没有数据库,应该能看的明白
2 不是“怎么跳窗户进屋子”,而是怎么防止别人跳窗户进屋子。

再说一遍,希望能帮助你理解:
我的tree是根据权限表生成的,用户没有权限的节点就不会出现,这是控制权限的第一步,对于通常情况是足够了。
但是如果用户别有用心,从别的电脑看到了地址,可以不使用tree,直接敲地址进入页面,如果在各个页面的page_load里加一个判断,判断页面地址是不是与tree.selectednode某个值一致。

首先,我不觉得这个需求不正常,如果你有更好的解决方案,欢迎交流。如果没有想到这一层,免费拿走。
其次,在实现方法上有很多种,我也不纠结于这一种思路。目前就是在各个页面再查询一次权限表进行判断,想使用session或者cookie存selectednode的思路,只是为了提高执行效率、减少访问数据库。如果有更好的实现方法,欢迎交流。
发表于 2017-7-3 16:12:29 | 显示全部楼层
898806387 发表于 2017-7-3 13:02
1  2、3楼有详细的说明,还有代码,虽然没有数据库,应该能看的明白
2 不是“怎么跳窗户进屋子”,而是怎 ...

在4楼我已经回答你 怎么防止别人跳窗户进屋子。
至于减少访问数据库提升效率,我是用 cache缓存权限。
获取当前访问页面的url,在缓存里看看当前的用户是否有这个url,有则有权限,否则无权限。
 楼主| 发表于 2017-7-5 16:51:46 | 显示全部楼层
zy32002 发表于 2017-7-3 16:12
在4楼我已经回答你 怎么防止别人跳窗户进屋子。
至于减少访问数据库提升效率,我是用 cache缓存权限。
获 ...

不论用什么存,你是往cache里写吗? 什么时候写?nodecommand吗?
navigateurl优先于nodecommand执行,跳到你的目标页面,
不论你用什么方法判断,你是用basepage吗?
这个时候你的cache里还没有写进来东西,判断的结果显而易见
发表于 2017-7-6 09:22:14 | 显示全部楼层
898806387 发表于 2017-7-5 16:51
不论用什么存,你是往cache里写吗? 什么时候写?nodecommand吗?
navigateurl优先于nodecommand执行,跳 ...

创建权限角色的时候,我就把权限放到cache里。用户登录后根据权限角色,和cache里的权限进行比对。
只要是页面继承了basepage都进行这样的权限比对规则。
不用写什么nodecommand,他也阻止不了直接跳窗户;我不点击node,有权限却不能直接访问页面,这也不科学。
你这是页面级别上权限,如果是button级别的权限,我想知道你怎么处理。
 楼主| 发表于 2017-7-7 00:05:07 | 显示全部楼层
zy32002 发表于 2017-7-6 09:22
创建权限角色的时候,我就把权限放到cache里。用户登录后根据权限角色,和cache里的权限进行比对。
只要 ...

有道理,既单独判断又不读数据库。我后来不想读表,写了个存储过程返回判断结果...还是cache好。谢谢
 楼主| 发表于 2017-7-7 00:42:18 | 显示全部楼层
zy32002 发表于 2017-7-6 09:22
创建权限角色的时候,我就把权限放到cache里。用户登录后根据权限角色,和cache里的权限进行比对。
只要 ...

有道理,既单独判断又不读数据库。我后来不想读表,写了个存储过程返回判断结果...还是cache好。谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-4-19 10:00 , Processed in 0.048427 second(s), 12 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表