ASP.NET 讀取使用者登入帳號:User.Identity vs LogonUserIdentity
1 |
在 2023 討論 ASP.NET WebForm,有點像大家都在聊海拉魯,你卻在研究瑪俐歐要怎麼救公主,邊緣感十足。但這個茶包讓我踩了好幾次雷,想想還是寫一篇紀念一下。
要在 ASP.NET 取得登入網站的使用者帳號,我們有不少舊程式是用 Request.LogonUserIdentity.Name 取值,運作多年相安無事,不覺得有什麼問題。但在測試台因特殊需求改用 Form 驗證(表單驗證)之後,問題一一浮現。
這裡借用 之前文章 的 Form 驗證程式小做修改,在頁面顯示 User.GetType().Name、Request.LogonUserIdentity.Name、User.Identity.Name 對照,進行實測驗證。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<form id="form1" runat="server">
<h3>WebForm</h3>
User.GetType().Name = <%= User.GetType().Name %> <br />
Request.LogonUserIdentity.Name = <%= Request.LogonUserIdentity.Name %> <br />
User.Identity.Name = <%= User.Identity.Name %>