能说下吗,我写了basepage的类,在每个页面中继承它,用来判断用户是否登陆,
是不是可以在这个类中进行一些权限的判断?

解决方案 »

  1.   

    public partial class basepage :system.web.ui.page
    {
          protected override  void oninit(eventargs e)
    { if (session["name"]==null)
       { response.write("需要登陆!");
         servier.transfer("login.aspx");
      }
    base.oninit(e);
    }
    }
      

  2.   

    在网上看了这个例子,有点看不懂,大神能帮我解释下吗
    public class PageBase:System.Web.UI.Page 

        public PageBase() 
        { 
         // 
         // TODO: 在此处添加构造函数逻辑 
         // 
         this.Init+=new EventHandler(PageBase_Init); 
        } 
        private void PageBase_Init(object sender, EventArgs e) 
        { 
         if(Session["UserName"]==null) 
         { 
            this.Response.Redirect("../back/error.aspx?ErrorInfo=超时或没登陆"); 
         } 
         else 
         { 
            if(!this.UserRight(Session["UserName"].ToString(),this.ModuleName(this.Request.Path.ToString()))) 
            { 
             this.Response.Redirect("../back/error.aspx?ErrorInfo=你没权限登陆,请与管理员联系"); 
            } 
         } 
     
        } 
        private bool UserRight(string UserName,string ModuleName) 
        { 
              { 
            return true; 
         } 
         else 
         { 
            return false; 
         } 
            
        } 
        private string ModuleName(string path) 
        { 
         string [] str=path.Split('/'); 
         return str[str.Length-1].Trim(); 
     
        } 
    }
    http://luoyi.blog.51cto.com/1377851/291251好象对每个页面设计了一个字段,并对应了用户组,在用户表中对应了用户名和组,来控制权限
    那怎么来判断用户点了哪个页面呢?
    例子中MS是ORACLE数据库。SQLSERVER该怎么办特别是这段看不懂
        MyLibrary.MMClass objMMClass =new MMClass(); 
         if( objMMClass.Oracle_ReturnThings_Adapter(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"select * from View_UserRight where UserName='"+UserName+"' and module='"+ModuleName+"'").Tables[0].Rows.Count>0) 
      

  3.   

    to  ta_wuhen 
    这个判断登陆的是我自己写的,能不能帮我看下这段代码
    public class PageBase:System.Web.UI.Page 

        public PageBase() 
        { 
         // 
         // TODO: 在此处添加构造函数逻辑 
         // 
         this.Init+=new EventHandler(PageBase_Init); 
        } 
        private void PageBase_Init(object sender, EventArgs e) 
        { 
         if(Session["UserName"]==null) 
         { 
            this.Response.Redirect("../back/error.aspx?ErrorInfo=超时或没登陆"); 
         } 
         else 
         { 
            if(!this.UserRight(Session["UserName"].ToString(),this.ModuleName(this.Request.Path.ToString()))) 
            { 
             this.Response.Redirect("../back/error.aspx?ErrorInfo=你没权限登陆,请与管理员联系"); 
            } 
         } 
     
        } 
        private bool UserRight(string UserName,string ModuleName) 
        { 
         MyLibrary.MMClass objMMClass =new MMClass(); 
         if( objMMClass.Oracle_ReturnThings_Adapter(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"select * from View_UserRight where UserName='"+UserName+"' and module='"+ModuleName+"'").Tables[0].Rows.Count>0) 
         { 
            return true; 
         } 
         else 
         { 
            return false; 
         } 
            
        } 
        private string ModuleName(string path) 
        { 
         string [] str=path.Split('/'); 
         return str[str.Length-1].Trim(); 
     
        } 
    }
      

  4.   

      数据库不同是不会影响到业务的,只是访问数据库的dbhelper不同而已
      

  5.   

    private string ModuleName(string path) 
        { 
         string [] str=path.Split('/'); 
         return str[str.Length-1].Trim(); 
     
        } 这段路径判断取当前模块
    private bool UserRight(string UserName,string ModuleName) 
        { 
              { 
            return true; 
         } 
         else 
         { 
            return false; 
         } 
            
        } 
    ---这段就是判断用户针对特定模块是否有操作权限。
      

  6.   

    public class PageBase:System.Web.UI.Page 

        public PageBase()  //页面基类
        { 
         // 
         // TODO: 在此处添加构造函数逻辑 
         // 
         this.Init+=new EventHandler(PageBase_Init);  //Init事件添加自定义处理逻辑PageBase_Init
        } 
        private void PageBase_Init(object sender, EventArgs e)   //PageBase_Init的具体实现
        { 
         if(Session["UserName"]==null) 
         { 
            this.Response.Redirect("../back/error.aspx?ErrorInfo=超时或没登陆"); 
         } 
         else 
         { 
            if(!this.UserRight(Session["UserName"].ToString(),this.ModuleName(this.Request.Path.ToString()))) //权限判断
            { 
             this.Response.Redirect("../back/error.aspx?ErrorInfo=你没权限登陆,请与管理员联系"); 
            } 
         } 
     
        } 
        private bool UserRight(string UserName,string ModuleName) //权限判断具体实现
        { 
              { 
            return true; 
         } 
         else 
         { 
            return false; 
         } 
            
        } 
        private string ModuleName(string path)  //根据路径去具体功能模块
        { 
         string [] str=path.Split('/'); 
         return str[str.Length-1].Trim(); 
     
        } 
    }整个代码逻辑是比较简单的操作方式,通常的权限实现可按:用户表,角色表,用户角色权限关系表,菜单表,用户或者角色菜单关系表的方式设计。
      

  7.   

    跟代码无关,先把逻辑设计搞清楚。你得basepage类怎么知道子类页面需要什么权限呢?
      

  8.   

    权限分配的问题吧。
    我只知道在config里面设置一些东西,来控制用户的权限。
    菜鸟一个,有错请指错。
      

  9.   


    objMMClass.Oracle_ReturnThings_Adapter(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"select * from View_UserRight where UserName='"+UserName+"' and module='"+ModuleName+"'").Tables[0].Rows.Count>0)
    这段代码就是访问oracle数据并判断用sql语句查询结果中的行是否大于0,即行小于0就是空的表,不做处理
      

  10.   

    ModuleName(this.Request.Path.ToString()).Request.Path.ToString()即为用户访问页面
      

  11.   

    ModuleName(this.Request.Path.ToString()).Request.Path.ToString()即为用户访问页面
    发现有的时候取不到  用户访问了哪个页面.
      

  12.   

    自己分析了下,会不会是basepage类没有继承到?或者说是继承了,ONINIT没有运行? 
      

  13.   

    为什么加了  public PageBase() 
        { 
         // 
         // TODO: 在此处添加构造函数逻辑 
         // 
         this.Init+=new EventHandler(PageBase_Init); 
        } 
    就打开网页就很慢,然后提示服务器应用程序不可用,日志中是500