簡體   English   中英

ASP.NET成員資格自定義身份驗證將用戶詳細信息添加到具有角色的用戶數據中

[英]Asp.net membership custom authentication add user details to userdata with roles

我已遵循以下指南《 表單身份驗證和基於角色的授權》來成功實現自定義成員身份驗證和授權。 我正在使用會話來獲取其他用戶詳細信息,例如名字和姓氏。 但是,當身份驗證Cookie仍然存在/有效時,會話可能會丟失。 現在,我希望能夠將用戶詳細信息添加到Cookie中,但不確定如何執行。 正在考慮將其添加到角色字符串中並從那里獲取它,但不確定其中有什么含義。 我也看到了此鏈接將數據存儲在身份驗證cookie中,但未提及使用角色。

因此,如何將角色和其他用戶詳細信息都作為Cookie的一部分,這樣我就不必在數據庫中查找此類詳細信息了?

謝謝。

如果要使用成員資格提供程序創建永久用戶,最好將其他用戶詳細信息存儲在獨立於用戶瀏覽器的類似永久存儲中。

您是否查看過“ 個人檔案提供程序” ,該提供程序允許您將個人檔案信息與會員數據一起存儲? 這可以與“成員資格”和“角色”提供程序一起使用,甚至允許您為匿名用戶創建永久性配置文件,一旦他們注冊,便可以繼承。

如果您確定不想使用Profile提供程序(並且有理由不這樣做),請務必查看DanH關於使用UserData字段AuthToken的答案 -但請注意,您需要自己生成(或重新生成)身份驗證令牌-我不用擔心沒有提及角色,它應該與現有方法很好地協同工作。

我將創建一個自定義RoleProvider ,而不是您鏈接到的方法。

至於用戶詳細信息,我會將其與身份驗證/授權邏輯分開。 可以使用Zhaph-Ben Duguid建議的配置文件提供程序,也可以自己實現。

如果使用Session來緩存用戶詳細信息,則Session與身份驗證cookie無關的事實不是問題,因為如果Session丟失,您始終可以從數據庫中刷新。

就像是:

public UserDetails UserDetails
{
    get
    {
        UserDetails userDetails = Session["UserDetails"] as UserDetails;
        if (userDetails == null)
        {
            userDetails = GetUserDetailsFromDatabase(HttpContext.Current.User.Identity.Name);
            Session["UserDetails"] = userDetails;
        }
        return userDetails;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM