为了账号安全,请及时绑定邮箱和手机立即绑定

登录后未存储 UserPrincipal.EmployeeId

登录后未存储 UserPrincipal.EmployeeId

C#
幕布斯7119047 2021-06-24 18:12:34
我正在使用 ActiveDirectory 身份验证(来自 Microsoft.Owin),这非常适合我的需要,但我遇到了一个问题,即即使我在登录过程中设置了 EmployeeId 也没有存储它。我仍在尝试学习这个库,所以我有点困惑。这是我的代码:广告认证服务.cspublic class AdAuthenticationService{    public class AuthenticationResult    {        public string ErrorMessage { get; private set; }        public bool IsSuccess => string.IsNullOrEmpty(ErrorMessage);        public AuthenticationResult(string errorMessage = null)        {            ErrorMessage = errorMessage;        }    }    private readonly IAuthenticationManager authenticationManager;    public AdAuthenticationService(IAuthenticationManager authenticationManager)    {        this.authenticationManager = authenticationManager;    }    public AuthenticationResult SignIn(String username, String password)    {        // authenticates against your domain account        ContextType authenticationType = ContextType.Domain;        PrincipalContext principalContext = new PrincipalContext(authenticationType);        bool isAuthenticated = false;        UserPrincipal userPrincipal = null;        try        {            var eacId = DatabaseOperations.Login(username.Trim(), password.Trim());            if (eacId > 0)            {                principalContext.ValidateCredentials(username.Trim(), password.Trim(), ContextOptions.Negotiate);                isAuthenticated = DatabaseOperations.Security(eacId) > 0;                if (isAuthenticated)                {                    userPrincipal = new UserPrincipal(principalContext,                        DatabaseOperations.GetFullNameByEacId(eacId), password, true);                    userPrincipal.EmployeeId = eacId.ToString();                }            }        }    }}在 SignIn 方法中,您可以在 下设置 eacId userPrincipal.EmployeeId,但是当我尝试从项目中的其他任何位置访问它时,它返回 null。我假设由于 CreateIdentity 方法,我应该向身份对象添加一个新声明?但是该对象对于 EmployeeId 没有任何内容,这正是我所需要的。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信