1

我對配置文件使用Windows身份驗證,並希望翻轉爲自定義身份驗證。
我的問題是如何指定我的用戶已通過身份驗證以及如何設置Profile.UserName。
我知道Profile.UserName是ReadOnly。

在我的Web.Config中,我更改authentication mode="None"並將IIS配置爲啓用匿名。
在global.asax中,我驗證用戶是否存在Cookie,如果不存在,用戶將重定向到登錄頁面。當他提交時,我創建了cookie,此時,我將設置配置文件信息。Windows身份驗證到使用配置文件的自定義身份驗證

如果有人可以給我一些關於此的鏈接,我會很感激。

+0

它可能不是你正在尋找,但是有沒有原因,你沒有使用表單身份驗證?它完成了迄今爲止所描述的一切,與定製相比,可以節省一些時間。 – 2010-09-29 15:16:04

+0

我會嘗試表單身份驗證,並讓你知道。 – 2010-09-29 15:28:46

回答

1

聽起來像Forms Authentication可以處理你需要的東西。將以下行添加到您的根web.config

<authentication mode="Forms"> 
    <forms name="XXXXX.ASPXAUTH" timeout="60" loginUrl="~/login.aspx" protection="All" path="/"></forms> 
</authentication> 

用任何你想調用你的cookie來替換XXX的。也可以將login.aspx重命名爲任何您命名的登錄頁面。此代碼會將未經身份驗證的任何人重定向到登錄頁面。

然後,在你登錄邏輯使用類似下面的C#代碼

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, txtUsername.Text, 
    DateTime.Now, DateTime.Now.AddMinutes(60), true, reader["user_level"] + "", 
    FormsAuthentication.FormsCookiePath); 
string hash = FormsAuthentication.Encrypt(ticket); 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); 
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration; 
Response.Cookies.Add(cookie); 

有了這個代碼,你會想在登錄者的用戶級別發送的(即管理員,用戶等)我有「讀者[...]

你需要做的最後一件事情是用它自己的web.config設置每個受保護的目錄,概述允許的用戶角色和被拒絕的角色。您在web.config中爲角色使用的名稱需要與發送到FormsAuthenticationTicket的值保持一致,並且您將很好。

+0

感謝賈斯汀,這很好。我可以用這種方法做我需要的一切。 – 2010-09-29 18:29:32

相關問題