小弟知道分不多,但是真情所在呀!
直入真题。
我在设计一个asp.net进销存网站,刚开始就遇到了以前从没想过的一个问题,听我慢慢说,大神大婶,先抽烟喝茶,不要走开,因为你的回答可能会帮助很多像我一样的伪菜鸟、假资深,以前只是写页面,现在想自己设计了,原本觉得简单的东西,一下子没有头绪了。
程序是这样的:
我准备这样做,用户如果直接输入URL地址登录系统的页面,我用
Form认证设置直接给他踢到登录页面(login.aspx),这个认证没有研究过,还是最近才知道的,就觉得只要在web.config中简单的加这么一段话就行:
<!--Form认证设置Start-->
<authentication mode="Forms">
<forms loginUrl="Manager/Login.aspx" name=".ASPXAUTH" ></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<!--Form认证设置End-->
好,这一步先假装是这样的,如果不是,先看完下面的,再用臭鸡蛋扔我。
我首先新建一个模板页,我是这样想的,在模版页里用menu导航控件动态的从数据库拿数据出来,但是有个前提,不同的用户登录到系统中,看到的超链接是不一样的(比如说,管理员登录了,可以看到后台管理,而普通用户只能看到一些基本的模块链接,而后台管理这个链接是看不到的)这一步,怎么做?我是这样做的,我在加载模板页的时候就通过登录用户,获取他的角色ID,再通过角色ID,找到他和模块表对应的ID映射,如果这句看不明白的话,看我下面的数据库设计
***********************************************************
模块表:
ID 父ID 模块名 是否禁用 是否系统 描述
-----------------------------------------------
1 0 YWZQ 0 0 根
2 1 系统应用 0 0 系统应用
3 1 系统维护 0 0 系统维护
4 2 部门管理 0 0 部门管理
5 2 角色管理 0 0 角色管理
6 2 用户管理 0 0 用户管理
7 3 日志管理 0 0 日志管理
8 1 进销存管理 0 0 进销存管理
9 8 采购管理 0 0 采购管理
10 8 库存管理 0 0 库存管理
11 8 销售管理 0 0 销售管理
12 8 客户关系管理 0 0 客户关系管理
13 8 统计管理 0 0 统计管理
***********************************************************
权限表:
ID 角色名 描述
-----------------------------------------
1 管理员 权限最大、可以对系统做任何操作
2 普通用户 只能操作部分系统功能
***********************************************************
模块权限对应表:
ID 角色ID 模块ID
-----------------------
1 1 2
2 1 3
3 1 8
4 2 8
***********************************************************
用户表:
ID 角色ID 用户名称 密码 是否禁用 创建时间 修改时间 其他
1 1 admin 123456 0 2012-01-07 00:00:00.000 NULL NULL
2 2 kangjian 123456 0 2012-01-07 00:00:00.000 NULL NULL
***********************************************************
接着上面的话,就是我知道当前登录的用户能访问哪些模块,我也可以通过他的角色ID,显示出他能访问这些模块的链接还有子链接,但是,有这么一种,可能,我没想明白,当前这个用户,登录到系统中了,他虽然没有某些页面的权限,换句话说,就是他没有能跳转过去某个页面的超链接,但是,他知道这个页面的URL地址,通过导航栏,他输入URL登录了,这个时候,我怎么判断?我还是在加载页面的时候判断这个用户的角色?再判断他的模块?再把当前模块的ID拿出来,到映射表中查看有没有对应的?如果没有就跳转到首页或者提示没有权限吗?我觉得这样做,总是不对劲,第一个原因就是,我怎么知道我当前页面的模块ID,总不能每次添加一个页面手动配置一个与数据库中相对应的ID吧。
就这个问题,很纠结,求大神大婶,神回复啊
还有另外一个比较没底的事儿,当前登录用户的名称也配置在模板页中(就像是CSDN中最上方的自己的登录名一样的东西)是不是不妥呀?是不是会让模板页变的有些臃肿啊,又是动态导航信息,又是用户信息,会不会加载有效率问题?如果不妥的话,有什么好的解决方案呢?
这个问题,也很纠结,求大神讲解
小弟这个还没有开始,就快要灭绝的小系统,不值一提,只是希望能帮我,还有更多的没有头绪的人,缕出一个清醒的思路来
希望有更好的方案,更适合的方案,求解答,小弟,拜谢,替那些被帮到的人,再谢