[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();
}
結語
最近要丟掉一些書,把以前沒注意過的章節唸一唸做的筆記