gpt4 book ai didi

wcf - 如何在 WCF 中存储有关经过身份验证的用户的信息?

转载 作者:行者123 更新时间:2023-12-02 02:35:43 25 4
gpt4 key购买 nike

我有一个 WCF 服务,我在其中使用 customUserNamePasswordValidatorType(在 web.config 文件的 behaviors\serviceBehaviors\serviceCredentials\userNameAuthentication 部分指定)。

我的自定义 UserNamePasswordValidator 就是这样工作的:

public bool Authenticate(string userName, string password)
{
If ( IsUserValid(username, password) )
{
UserInfo currentUser = CreateUserInfo(username);
//
// Here I'd like to store the currentUser object somewhere so that
// it can be used during the service method execution
//
return true;
}
return false;

在服务调用执行期间,我需要访问经过身份验证的用户的信息。例如我希望能够实现:

public class MyService : IService
{
public string Service1()
{
//
// Here I'd like to retrieve the currentUser object and use it
//
return "Hello" + currentUser.Name;
}
}

我的问题是在身份验证过程中我应该如何以及在何处存储信息,以便在调用执行过程中可以访问这些信息?只要“ session ”有效,该存储就应该持续。

顺便说一句,我不使用(也不想使用)安全 session 和/或可靠 session 。所以我同时关闭了 establishSecuritytContext 和 reliableSessions。

我正在考虑启用 ASP.NET 兼容模式以将用户信息存储在 HttpContext.Current.Session 中,但我觉得这不是应该的做法。

最佳答案

将任何需要持久化的内容存储到持久化存储中——例如一个数据库,这是最好的方法。

将用户信息存储在用户表中,例如ASP.NET 成员(member)系统或您自己的东西。手边保留某种识别 token (用户名、ID 等),以便在需要时从数据库中检索该信息。

您应该尽可能争取无状态 WCF 服务 - 它不应该依赖于安全存储在数据库中的内容以外的任何类型的“状态”。

关于wcf - 如何在 WCF 中存储有关经过身份验证的用户的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1891058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com