2009年8月3日 星期一

asp.net 的帳號

asp.net 的帳號,有好多個。

其中,最常用的就是 Page.User.Identity,代表使用者登入後,系統認定該使用者的帳號。

這有什麼問題呢?原來,帳號的學問可大著呢。

 protected void Page_Load(object sender, EventArgs e)
    {
      lblPage.Text = this.Page.User.Identity.Name;
      lblThread.Text = Thread.CurrentPrincipal.Identity.Name;
      lblWindowsIdentity.Text = WindowsIdentity.GetCurrent().Name;
      lblLogonUserIdentity.Text = this.Page.Request.LogonUserIdentity.Name;
    }
Identity 說明
this.Page.User.Identity 使用者登入後,系統用來識別該使用者的帳號
Thread.CurrentPrincipal.Identity 這個我不太了解。通常與this.Page.User.Identity相同。
WindowsIdentity.GetCurrent() 代表執行該網頁時,Windows 真正執行的identity
this.Page.Request.LogonUserIdentity IIS 上設定的執行帳號。IIS 6 以後,就是 Application Pool 所指定的identity,通常是 Network Service

這有哪些變化呢?

  1. IIS 上的驗證方式。有 anonymous, windows NTLM。
  2. IIS 上 Application pool 的 identity
  3. web.config 上的 <authenticaion mode=”Forms” or mode=”Window”
  4. web.config 上 <identity impersonate="true", 或 <identity impersonate="true" userName="userName" password="password"/>

這些設定,都可能影響上述4個 identity 的值。由於變化太多了,我也無法完全記錄下來。大家就自行試試看囉!

範例程式下載

沒有留言:

Share with Facebook