访问页面

时间:2015-12-25 04:26:23

标签: c# asp.net

我继承了一个asp.net应用程序,该应用程序根据SQL Server数据库字段中的值为用户提供对页面的访问权限。在加载每个页面时,将运行一个过程来检查数据库的用户标识和页面名称,以确定用户标识是否可以访问特定页面。如果access = 'Yes'允许用户查看页面上的所有元素,如果access = 'No'用户已退出系统并重定向到登录屏幕。

为了在开始时存储用户ID有权访问的所有页面,我需要做什么,所以一旦用户登录,他们只能看到他们有权访问的内容,而不是每次都进行检查。用户是否请求访问页面?

2 个答案:

答案 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的会话中检查针对该对象的用户页面请求。如果他们失败了,我们会将他们发送到登录页面。