【问题标题】:Restrict user access using session - ASP.NET使用会话限制用户访问 - ASP.NET
【发布时间】:2020-07-17 04:57:52
【问题描述】:

我是编程新手。我开发了一个 Web 应用程序,在登录页面上,如果登录成功,我将捕获会话 ID,并将用户重定向到主页。

我的查询 - 是否可以通过使用母版页中的会话控制来限制用户访问基于其角色的网页。如果是这样,如何隐藏某些网页?

登录页面代码-

con.Open();
SqlCommand cmd = new SqlCommand("select * from LoginDB where (EmpCode COLLATE Latin1_General_CS_AS = @EmpCode) and (Password COLLATE Latin1_General_CS_AS =@Password)", con);
cmd.Parameters.AddWithValue("@EmpCode", txtLogin.Text.Trim());
cmd.Parameters.AddWithValue("@Password", txtPwd.Text.Trim());
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

if (dt.Rows.Count > 0)
{
    var userRow = dt.Rows[0];
    Session["idname"] = userRow["Name"].ToString();
    ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('" + "Login Success!" + "')</script>");
    Session["identity"] = txtLogin.Text;
    Response.Redirect("Mainpage.aspx", false);
}
else
{
    txtLogin.Text = "";
    ShowMessage("UserId / Password is Not Correct!");
}
con.Close();

要在母版页中使用的代码,

protected void Page_Load(object sender, EventArgs e)
{
   string mnm = Session["identity"].ToString();
   if (mnm == "NormalUser")
   {
       //Hide certain web pages like Asset.aspx web page
   }       
}

【问题讨论】:

  • 哦……我希望我能牵着你的手,引导你走上自己的道路……有很多话要说……
  • @AndreCalil 很抱歉给您带来麻烦,请您告诉正确的方法。
  • 完全没有问题,我的朋友。就是这样,我想在这里谈的太多了,以至于超出了这种互动。它是网络表单,您将密码存储为纯文本,您正在使用会话,您正在尝试通过文本进行访问控制...我想帮助您理解这些要点,我只是不知道如何。

标签: c# asp.net session master-pages


【解决方案1】:

我建议您在Page.OnInit 中为您拥有的每个 aspx 检查用户的角色,而不是在母版页中执行此操作。例如在Asset.aspx.cs 你可以这样做:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    string mnm = Session["identity"].ToString();
    if (mnm != "NormalUser")//check whatever you want with the identity
    {
        throw new UnauthorizedAccessException("You are not allowed to view this page");
    }  
}

以便您可以将此方法应用于其他页面。

【讨论】:

  • 页面加载事件在OnInit完成后触发。因此无需再次在 Page_load 中检查用户权限。见:ASP.NET Page Life Cycle Overview
  • 我试过这个,但执行时出错,“throw new UnauthorizedAccessException("You are not allowed to view this page");"行。
  • @santosh 抱歉,但很难理解。你能详细说明一下你在哪里得到异常等等吗?
  • 当用户尝试访问受限页面时,我通过将用户重定向到主页克服了该错误。没事吧?
  • 当然,例如您可以Response.Redirect("~/AccessDenied.aspx"); 而不是抛出异常。这完全取决于你..
猜你喜欢
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 2010-11-25
  • 2015-07-23
  • 2010-09-17
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多