禁止用户在没有登录的情况下访问页面/ URL

时间:2015-08-28 19:39:24

标签: c# asp.net webforms

我是ASP.net的新手,新手,但我正在学习它自己!我正在测试和学习ASP.NET中的登录和注销功能。实际上我的问题是我有一个简单的页面,即Default.aspx用于登录目的:

<body>
<form id="form1" runat="server">
<div>
    <h1>Please Sign in</h1>
    UserName:
    <asp:TextBox id="uname"  runat="server"></asp:TextBox>
    <br/>
    Password:
    <asp:TextBox id="upass"  runat="server"></asp:TextBox>
    <br/>
    <asp:Button id="but"  runat="server" text="signup" OnClick="but_Click"/>
    <br/>
    <asp:Label ID ="lblInformation" runat ="server" ForeColor ="Red"/>
</div>
</form>
</body>

我正在登录为(Default.aspx.cs):

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    String name = null;
    String pass = null;

    protected void but_Click(object sender, EventArgs e)
    {
        name = uname.Text;
        pass = upass.Text;
        if (name.Equals("admin")&&pass.Equals("admin"))
        {
            FormsAuthentication.RedirectFromLoginPage(name, false );
        }
    }
}
成功登录后

;重定向到Home.aspx:

 <body>
   <form id="form1" runat="server">
     <div>
       <h1>Hello User</h1>
        <asp:Button ID="but" OnClick="but_Click" text="signout" runat="server"/>
     </div>
   </form>
 </body>

我退出为Home.aspx.cs

 public partial class Home : System.Web.UI.Page
 {
   protected void Page_Load(object sender, EventArgs e)
   {
   }
   protected void but_Click(object sender, EventArgs e)
   {
      FormsAuthentication.SignOut();
      FormsAuthentication.RedirectToLoginPage();
   }
 }

问题 问题是登录后如果我复制Home.aspx页面URL(登录后登陆的页面),并粘贴到浏览器搜索栏并按回车键,我可以看到它没有我已经登录!

我的意思是我希望我的用户限制登陆Home.aspx,如果他没有登录任何情况!

所以问题是我如何限制我的用户查看Home.aspx页面,如果他还没有登录,因为我只是通过将Home.aspx URl复制到浏览器中我没有登录就可以查看页面! / p>

对不起我的英语我不是来自英国国家我只是在学习asp.net。

由于

3 个答案:

答案 0 :(得分:2)

Page_Load事件检查中进行授权。

if (!User.Identity.IsAuthenticated)
{
    Response.Redirect("~/Login.aspx");
}

答案 1 :(得分:2)

可能最简单的方法是在Home.aspx的Page_Load方法中添加

if(!Request.IsAuthenticated) { FormsAuthentication.RedirectToLogin(); }

答案 2 :(得分:0)

让ASP.Net为您完成工作;你可以通过web.config来控制它。

您可以将以下内容添加到<system.web>部分:

  <!-- Specify that only authenticated users are allowed to access pages by default. 
   Those that anonymous users can access will be specified separately. -->
  <authorization>
    <deny users="?" />
  </authorization>

然后,您可以添加以下条目以允许未登录的用户访问default.aspx:

<!-- Specify those files that all users can access, even if they aren't logged in -->
<location path="Default.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>