[ASP.net WebForm] 登入後導回之前的頁面

[ASP.net WebForm] 登入後導回之前的頁面

前言

用WebForm做真簡單,還可以跟現有使用Session做登入機制的系統整合,抄下來…

 

實作

Step 1.

Web.config追加以下粗體字

<?xml version="1.0" encoding="utf-8"?>

<!--
  如需如何設定 ASP.NET 應用程式的詳細資訊,請造訪
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>

  <connectionStrings>
  </connectionStrings>
    <system.web>
      
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    <authentication mode="Forms">
      <forms name="testWebSiteForm" protection="All" loginUrl="Login.aspx"  timeout="30"  >
        
      </forms>
    </authentication>
    </system.web>

</configuration>

 

由於Form的名稱會影響登入資訊儲存的Cookie名稱,所以最好取Web專案的名稱

timeout為登入後的逾時時間,單位分鐘

Step 2.

在每個頁面的Page_Load事件判斷使用者有無登入(如果有套MasterPage的話,就寫在MasterPage的OnInit事件判斷)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*引用以下命名空間*/
using System.Web.Security;

public partial class MasterPage : System.Web.UI.MasterPage
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        //使用者未登入
        if (! Page.User.Identity.IsAuthenticated)
        {
            //導向登入頁面
            FormsAuthentication.RedirectToLoginPage();

        }
        else
        {
            Response.Write("您已通過使用者身份驗證" + "<br/>");
            Response.Write("使用者帳號:" + Page.User.Identity.Name + "<br/>");
            Response.Write("驗證狀態:" + Page.User.Identity.IsAuthenticated + "<br/>");
            Response.Write("驗證模式:" + Page.User.Identity.AuthenticationType + "<br/>");
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

Step 3.新增一個Login.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        帳號:<asp:TextBox runat="server"  ID="txtUserID"/><br />
        密碼:<asp:TextBox runat="server" id="txtPwd" TextMode="Password"/><br />
        <asp:Button Text="登入" ID="btnLogin" runat="server" OnClick="btnLogin_Click" />
    </form>
</body>
</html>

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*引用以下命名空間*/
using System.Web.Security;

public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
      
    }
    //按下登入鈕
    protected void btnLogin_Click(object sender, EventArgs e)
    { 
        //判斷資料庫是否有此帳密
        if (txtUserID.Text=="test" && txtPwd.Text=="test")
        {
            //有此帳密,導回原本Request的頁面
            FormsAuthentication.RedirectFromLoginPage(txtUserID.Text,true);
          
        }
        else
        {
             //沒有此帳密,其他處理…
        }
    }
}

 

Step 4.

如果要登出的話

    
//先引用using System.Web.Security;
   //登出按鈕Click
    protected void btnSignout_Click(object sender, EventArgs e)
    {
        //登出,銷毀登入資訊的Cookie
        FormsAuthentication.SignOut();
        //頁面導向登入頁
        FormsAuthentication.RedirectToLoginPage();
    }

 

結語

最近要丟掉一些書,把以前沒注意過的章節唸一唸做的筆記