来谈谈【权限模块】的设计~~~

oldmht 2008-07-16 02:07:15
以前没用过C#做系统,做过asp的,asp中的权限我都是设置到不同的session变量里面,现在要做一个C#的系统,首先是想了解一下各位大大对权限模块的设计。

数据库设计大同小异就不说了,我的想法是,在每一个页面中引用权限类库,然后通过类似如下的代码(用中文了)访问权限模块:

//判断用户是否登录
if (权限类.当前用户==null){ 提示错误(); }

//判断用户是否具有模块的操作权限,如果没有则跳转到错误提示页面
权限类.检测模块权限(模块.产品管理.产品添加);

//提取当前用户信息
string UserName = 权限类.当前用户.UserName;

这样的要求可以达到么,有人说写一个basepage.cs类,以后的文件都继承它(之前修改过一个C#网站就是这样的,略显麻烦),那是不是需要每个页面都是aspx+cs的方式,我想有必要的地方就只用aspx,那就不知道怎么继承了

这里不讨论数据库设计,谢谢
...全文
227 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldmht 2008-07-25
  • 打赏
  • 举报
回复
我的权限模块设计完成,发出来交流:包含Model.ACS.cs,BLL.ACS.cs,DAL.ACS.cs,test.aspx

[Model.ACS.cs]
using System;
using System.Collections;
using System.Text;
using Json;

namespace Model
{

public static class ACS
{
/// <summary>
/// 用户模型
/// </summary>
public class User
{
public string SessionID;
public string UserName;
public string Password;
public string StoreRoomCode;
public bool IsSuperAdmin;
public string RoleCode;
public string Telphone;
public string Remark;
public Hashtable FunctionList;
public Model.StoreRoom.ItemInfo StoreRoom;

}



/// <summary>
/// 功能结构模型树
/// </summary>
public class FunctionModel
{
/// <summary>
/// 功能结构树叶节点模型
/// </summary>
public class FunctionBase
{
public string Name; //功能名称
public string Description; //功能描述
public FunctionBase()
{ }
public FunctionBase(string Name)
{
this.Name = Name;
}
public FunctionBase(string Name, string Description)
{
this.Name = Name;
this.Description = Description;
}

}

/// <summary>
/// 修改密码
/// </summary>
public class ChangePasswordClass : FunctionBase
{
//public FunctionBase Edit = new FunctionBase(); //修改密码 -> 修改

public ChangePasswordClass()
{
this.Name = "ChangePassword";
this.Description = "修改当前用户登录密码";

//Edit.Name = "保存密码";
//Edit.Description = "保存当前用户的新密码";

}
}
/// <summary>
/// 退出系统
/// </summary>
public class ExitClass : FunctionBase
{
public ExitClass()
{
this.Name = "Exit";
this.Description = "退出系统";

}
}
/// <summary>
/// 存储位置配置
/// </summary>
public class StoreAreaSettingClass : FunctionBase
{
public StoreAreaSettingClass()
{
this.Name = "StoreAreaSetting";
this.Description = "存储位置配置";

}
}

/// <summary>
/// 物料分类配置
/// </summary>
public class GoodsClassSettingClass : FunctionBase
{
public GoodsClassSettingClass()
{
this.Name = "GoodsClassSetting";
this.Description = "物料分类配置";

}
}
}

[JsonCustomSerialization]
public class FunctionItem
{
public FunctionModel.FunctionBase Function;
public string FunctionName;
public FunctionItem() { }
public FunctionItem(FunctionModel.FunctionBase Function, string FunctionName)
{
this.Function = Function;
this.FunctionName = FunctionName;
}
}
}


}
oldmht 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yagebu1983 的回复:]
写个Page类!!!
他从UI.Page继承而来!!!
重载OnInit()
[/Quote]

是的,我看人家的代码是这样做的,但是这样做我不知道怎么在单独的一个aspx文件里面用 -_-
oldmht 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chengqscjh 的回复:]
1、权限类是静态类的话,不生成实体,不传送session、response这些东西,权限类中能访问session能访问response么
2、"检测模块权限"这个函数传入的参数应该也是静态类能实现么,也就是静态类中能存贮自定义属性值么
--------------------------------------------------------------
权限类并不非是静态类吧,可以写成类的形式调用,至于session、response可以直接以数据库的方式读取

静态类中能存贮自定义属性值?
[/Quote]

我的意思是,用静态的话就可以直接调用,省掉生成实体的代码了,这样的同时,就没有专门的代码去传送session和response给权限类,那么它通过主动获取的方式能得到这些东西么,得到session就可以判断当前用户信息,得到response就可以输出字符、跳转页面

“静态类中能存贮自定义属性值?”,提出这个问题,我是这样考虑的,比如一个类:模块.产品管理.产品添加,它是静态的话,就没有实体,那么我怎么取得他的一些属性,比如模块编号为:0002,然后我再去数据库里面查找当前用户有没有0002模块的权限,页就是能用“权限类.检测模块权限(模块.产品管理.产品添加); ”代替“权限类.检测模块权限("0002"); ”这样的不够直观的代码
yagebu1983 2008-07-16
  • 打赏
  • 举报
回复
写个Page类!!!
他从UI.Page继承而来!!!
重载OnInit()
oldmht 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chengqscjh 的回复:]
我想有必要的地方就只用aspx
-------------------------
这点我不时很赞同你的观点,只用aspx的话也就是前台设计,跟asp就没什么区别了,而aspx+c#就是为了将代码进行分离而设计的

基本上你的权限调用方式是正确的,把函数写在basepage.cs里面,可以直接调用
[/Quote]

只用aspx和用aspx+cs我觉得就仅仅是代码分离与不分离的问题
我做的aspx就没有界面,只是做前台(ajax组件)和后台逻辑层的一个结合,我想这样的设计没必要在一个简单的结合层里面
再分开前台设计和代码,因为本身它就没有前台设计,只有代码
如果只用aspx的话,拷贝粘贴文件就很方便了。所以我还是想知道只用aspx能做到么
zhnzzy 2008-07-16
  • 打赏
  • 举报
回复
判断权限写在CS文件里面显然更好,你不觉得吗?既然ASP.NET程序,不是asp为什么要弄得跟ASP一样呢?
chengqscjh 2008-07-16
  • 打赏
  • 举报
回复
1、权限类是静态类的话,不生成实体,不传送session、response这些东西,权限类中能访问session能访问response么
2、"检测模块权限"这个函数传入的参数应该也是静态类能实现么,也就是静态类中能存贮自定义属性值么
--------------------------------------------------------------
权限类并不非是静态类吧,可以写成类的形式调用,至于session、response可以直接以数据库的方式读取

静态类中能存贮自定义属性值?
chengqscjh 2008-07-16
  • 打赏
  • 举报
回复
我想有必要的地方就只用aspx
-------------------------
这点我不时很赞同你的观点,只用aspx的话也就是前台设计,跟asp就没什么区别了,而aspx+c#就是为了将代码进行分离而设计的

基本上你的权限调用方式是正确的,把函数写在basepage.cs里面,可以直接调用
oldmht 2008-07-16
  • 打赏
  • 举报
回复
主要是有一些问题不了解:

1、权限类是静态类的话,不生成实体,不传送session、response这些东西,权限类中能访问session能访问response么
2、"检测模块权限"这个函数传入的参数应该也是静态类能实现么,也就是静态类中能存贮自定义属性值么
3、还没意识到的设计过程中会遇到的问题,谢谢

可能说的不是很对,以前只做面向过程的asp,不好意思

110,021

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧