我现在一个后台管理系统,在管理用户登录和权限这个模块的设计中。。背景:
我没有采用.net自带的成员资格管理的功能。议题:
我想完全采用OOP的思想来做用户登录和权限管理,而不用Session来做
请大家给我一个建设性方案来很安全很干净的管理登录和权限控制模块?

解决方案 »

  1.   

    http://blog.csdn.net/sw515/archive/2004/10/23/148257.aspx
      

  2.   

    用户登录后,用户在浏览其他页面后,如何用一种简单方法来判断用户的登录状态?
    难道要在每个页面都用page_load()中用If ( ) else....?
    有没有跟好的方法?
      

  3.   

    www.51aspx.com
    应该蛮多的吧
      

  4.   

    为什么要每一个页面都写,把所有用户权限操作都放在一个类中,到底用不用session,那你可以用cache,或者cookie随便你用如:
    public class PrivaligUser
    {
        public static bool UserLogin();
        Public static  bool UserLogout();   public static  bool IsUserLogin();
     
       public static  User GetUser();
       
       public static  String GetUserName();
    }
    然后在page_load中,
    if(PrivaligUser.IsUserLogin())
    {
       //登录成功
    }
      

  5.   

    如果你每一个页面都要判断,那你可以,自定义一个page类,所以要判断的页面都继承于你的自定义page类如:
    public class MyBasePage:System.Web.UI.Page
    {
        public override void Page_Load(object sender, EventArgs e)
       {
    if(PrivaligUser.IsUserLogin()) 

      //登录成功 
    }
    else
    {
       Response.Redirect("~/login.aspx");
    }

    }
    然后所有页面中,都继续于这个类就行
      

  6.   

    用户->用户组->权限->功能模块
      

  7.   

    通过角色设置用户权限
    http://www.cnblogs.com/b4n73/archive/2009/01/09/1372404.html
    http://www.cnblogs.com/nehu/archive/2005/06/20/177942.aspx
      

  8.   

    直接在全局变量中判断但是有个问题我用的比较笨的方式就是每个独立建立的文件夹下面都要都写一个页面的代码~~~嘻嘻 但是不用像上面的那样写if else 
      

  9.   

    这个是用户类,记录用户登陆信息public class User
        {
            public User(string mUserCode ,string mUserName,string mIp)  //构造器
            {
                sUserCode = mUserCode;
                sUserName = mUserName;
                sIp = mIp;
            }
            #region 私有变量
            private string sUserCode;
            private string sUserName;
            private string sIp;
            #endregion        #region 属性定义
            public string UserCode
            {
                get { return sUserCode; }
                set { sUserCode = value; }
            }        public string UserName
            {
                get { return sUserName; }
                set { sUserName = value; }
            }        public string IP
            {
                get { return sIp; }
                set { sIp = value; }
            }
            #endregion 
        }这个是基类 public class BasePage : Page
        {
           protected void Page_Load(object sender, EventArgs e)
            {
                if (this.Session["user"] != null)
                {
                    try
                    {
                        if(this.Session["user"]!=null)                                           
                           {
                            //判断用户登录问题
                            User oUser = this.Session["user"] as User;
                            if(oUser != null)
                            {
                               string sUserName = oUser.UserName;
                            }
                        }
                       }
                    catch (Exception ex)
                    {
                        RedirectError(ex.Message);
                    }
                }
                else
                {
                    RedirectError("用户信息丢失!");
                }
            }
        }
    在第一次登录的时候建立一下session就好了

    protected void Page_Load(object sender, EventArgs e)
    {
       User oUser = new User();
       oUser.UserName = "123";
       oUser.IP="127.0.0.1";
       this.Session["user"] = oUser;
    }//以后的别的页面继承BasePage 去同一管理用户
      

  10.   

    你就完全自己抄一次ASP.NET 2.0內置的MembershipProvider和RolesProvider好了,確實那就是最佳的OO設計方案了——擴展性好,不包括冗餘的功能,同時能夠方便定製滿足不通場景的需求。在大多數情況下,想要自己寫一個東西去超越Microsoft寫過的,那是不現實的。別人寫好了,你想要學習,那就認真學習好了。
      

  11.   

    我想完全采用OOP的思想来做用户登录和权限管理,而不用Session来做 
    ---------
    你有什么证据证明成员资格不是OOP的?OOP和Session没有任何关系...正如24楼所言...你想写一个超越成员资格的东西...可能性几乎没有...