能说下吗,我写了basepage的类,在每个页面中继承它,用来判断用户是否登陆,
是不是可以在这个类中进行一些权限的判断?
是不是可以在这个类中进行一些权限的判断?
解决方案 »
- 求解释p =>表达式
- ObjectDataSource更新页面后如何刷新?
- Js获取服务器端Image控件ID
- asp.net转换PDF的问题
- 在根目录的子目录下安装过discuz .net2.0 sql版的兄弟请进
- Response.Write(DateTime.Now.ToString("yyyy-MM-dd hh:mm tt"));
- 奇怪的问题,明明一样,为什么显示不相等呢?
- datalist绑定和传值问题,再线等,谢谢
- <meta />元素是放在body里面还是放在head里面?
- ie浏览器下JS关闭页面比弹出提示
- 想好好学习一下Devexpress,大家给个建议
- .net系统IIS发布后获取不到客户端电脑登录名
{
protected override void oninit(eventargs e)
{ if (session["name"]==null)
{ response.write("需要登陆!");
servier.transfer("login.aspx");
}
base.oninit(e);
}
}
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)
这个判断登陆的是我自己写的,能不能帮我看下这段代码
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();
}
}
{
string [] str=path.Split('/');
return str[str.Length-1].Trim();
} 这段路径判断取当前模块
private bool UserRight(string UserName,string ModuleName)
{
{
return true;
}
else
{
return false;
}
}
---这段就是判断用户针对特定模块是否有操作权限。
{
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();
}
}整个代码逻辑是比较简单的操作方式,通常的权限实现可按:用户表,角色表,用户角色权限关系表,菜单表,用户或者角色菜单关系表的方式设计。
我只知道在config里面设置一些东西,来控制用户的权限。
菜鸟一个,有错请指错。
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就是空的表,不做处理
发现有的时候取不到 用户访问了哪个页面.
{
//
// TODO: 在此处添加构造函数逻辑
//
this.Init+=new EventHandler(PageBase_Init);
}
就打开网页就很慢,然后提示服务器应用程序不可用,日志中是500