以前没用过C#做系统,做过asp的,asp中的权限我都是设置到不同的session变量里面,现在要做一个C#的系统,首先是想了解一下各位大大对权限模块的设计。数据库设计大同小异就不说了,我的想法是,在每一个页面中引用权限类库,然后通过类似如下的代码(用中文了)访问权限模块://判断用户是否登录
if (权限类.当前用户==null){ 提示错误(); }//判断用户是否具有模块的操作权限,如果没有则跳转到错误提示页面
权限类.检测模块权限(模块.产品管理.产品添加);//提取当前用户信息
string UserName = 权限类.当前用户.UserName;这样的要求可以达到么,有人说写一个basepage.cs类,以后的文件都继承它(之前修改过一个C#网站就是这样的,略显麻烦),那是不是需要每个页面都是aspx+cs的方式,我想有必要的地方就只用aspx,那就不知道怎么继承了这里不讨论数据库设计,谢谢

解决方案 »

  1.   

    主要是有一些问题不了解:1、权限类是静态类的话,不生成实体,不传送session、response这些东西,权限类中能访问session能访问response么
    2、"检测模块权限"这个函数传入的参数应该也是静态类能实现么,也就是静态类中能存贮自定义属性值么
    3、还没意识到的设计过程中会遇到的问题,谢谢可能说的不是很对,以前只做面向过程的asp,不好意思
      

  2.   

    我想有必要的地方就只用aspx
    -------------------------
    这点我不时很赞同你的观点,只用aspx的话也就是前台设计,跟asp就没什么区别了,而aspx+c#就是为了将代码进行分离而设计的基本上你的权限调用方式是正确的,把函数写在basepage.cs里面,可以直接调用 
      

  3.   

    1、权限类是静态类的话,不生成实体,不传送session、response这些东西,权限类中能访问session能访问response么 
    2、"检测模块权限"这个函数传入的参数应该也是静态类能实现么,也就是静态类中能存贮自定义属性值么 
    --------------------------------------------------------------
    权限类并不非是静态类吧,可以写成类的形式调用,至于session、response可以直接以数据库的方式读取静态类中能存贮自定义属性值?
      

  4.   

    判断权限写在CS文件里面显然更好,你不觉得吗?既然ASP.NET程序,不是asp为什么要弄得跟ASP一样呢?
      

  5.   


    只用aspx和用aspx+cs我觉得就仅仅是代码分离与不分离的问题
    我做的aspx就没有界面,只是做前台(ajax组件)和后台逻辑层的一个结合,我想这样的设计没必要在一个简单的结合层里面
    再分开前台设计和代码,因为本身它就没有前台设计,只有代码
    如果只用aspx的话,拷贝粘贴文件就很方便了。所以我还是想知道只用aspx能做到么
      

  6.   

    写个Page类!!!
    他从UI.Page继承而来!!!
    重载OnInit()
      

  7.   


    我的意思是,用静态的话就可以直接调用,省掉生成实体的代码了,这样的同时,就没有专门的代码去传送session和response给权限类,那么它通过主动获取的方式能得到这些东西么,得到session就可以判断当前用户信息,得到response就可以输出字符、跳转页面“静态类中能存贮自定义属性值?”,提出这个问题,我是这样考虑的,比如一个类:模块.产品管理.产品添加,它是静态的话,就没有实体,那么我怎么取得他的一些属性,比如模块编号为:0002,然后我再去数据库里面查找当前用户有没有0002模块的权限,页就是能用“权限类.检测模块权限(模块.产品管理.产品添加); ”代替“权限类.检测模块权限("0002"); ”这样的不够直观的代码
      

  8.   


    是的,我看人家的代码是这样做的,但是这样做我不知道怎么在单独的一个aspx文件里面用 -_-
      

  9.   

    我的权限模块设计完成,发出来交流:包含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 Re;
                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;
                }
            }
        }
    }