我继承了一个asp.net
应用程序,该应用程序根据SQL Server
数据库字段中的值为用户提供对页面的访问权限。在加载每个页面时,将运行一个过程来检查数据库的用户标识和页面名称,以确定用户标识是否可以访问特定页面。如果access = 'Yes'
允许用户查看页面上的所有元素,如果access = 'No'
用户已退出系统并重定向到登录屏幕。
为了在开始时存储用户ID有权访问的所有页面,我需要做什么,所以一旦用户登录,他们只能看到他们有权访问的内容,而不是每次都进行检查。用户是否请求访问页面?
答案 0 :(得分:2)
我会展示一些代码。 它是这样的。
string session_string="";
SqlConnection cn = new SqlConnection(YOUR_CONNECTION_STRING);
cn.open();
SqlCommand cmd = new SqlCommand();
cmd.Connection=cn;
cmd.CommandType=CommandType.Text;
cmd.CommandText="select name_of_pages from permission where username='YOUR_USERNAME'";
SqlDataReader rdr = cmd.ExecuteReader();
if(rdr.hasRows==true){
while(rdr.Read()){
session_string=rdr["name_of_pages"] + ",";//You need to declare this variable globally before
session_string=session_string + rdr["name_of_pages"] + ","; //USE THIS LINE , NOT PREVIOUS ONE
}
}
rdr.close();//DONT FORGET THIS ALSO
cn.close();//DONT FORGET THIS
Session["pages"]=session_string;
//Now to check
if(Session["pages"].Contains("Index.aspx")){
//PERFORM SOMETHING POSITIVE
}
else
{
//PERFORM SOMETHING NEGATIVE
}
根据您的需要更改一些代码。
答案 1 :(得分:0)
好的,我们在用户登录后使用FormsAuthenticationTicket。使用票证,我们会反对数据库并获得用户滚动和缓解。这会进入会话变量。 (因为您使用的是asp.net)然后我们在Global asa的会话中检查针对该对象的用户页面请求。如果他们失败了,我们会将他们发送到登录页面。