System.Data.SqlClient、System.Web.SecurityFormsAuthDemo)<configuration>
<system.web>
<!-- 設定表單認證模式 -->
<authentication mode="Forms">
<forms name=".ASPXFORMSDEMO"
loginUrl="Logon.aspx"
protection="All"
path="/"
timeout="30" />
</authentication>
<!-- 拒絕匿名使用者,允許已驗證使用者 -->
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</configuration>
關鍵屬性說明:
name:Cookie 名稱,避免多應用程式衝突loginUrl:未驗證導向的登入頁protection="All":驗證 + 加密(預設)timeout:票據有效分鐘數(滑動過期)path:Cookie 路徑範圍IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].[Users]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[Users]
GO
CREATE TABLE [dbo].[Users] (
[uname] [varchar](15) NOT NULL,
[Pwd] [varchar](25) NOT NULL,
[userRole] [varchar](25) NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY NONCLUSTERED ([uname])
) ON [PRIMARY]
GO
INSERT INTO Users VALUES ('user1', 'user1', 'Manager')
INSERT INTO Users VALUES ('user2', 'user2', 'Admin')
INSERT INTO Users VALUES ('user3', 'user3', 'User')
GO
設計重點:
uname 為主鍵,長度 15Pwd 明文儲存(示範用,生產環境**必須雜湊**)userRole 支援角色型授權Pubs 資料庫(或自建)Users 表建立且資料寫入FormsAuthentication.HashPasswordForStoringInConfigFile 或 BCrypt/Argon2<connectionStrings> 區段,勿硬編碼timeout 設定平衡安全與使用者體驗完成上述步驟,專案已具備表單認證基礎設施。下一篇將實作登入頁面、驗證邏輯與票據管理。