首页 > 其他分享 >.NET Core3.1 调用AD域验证

.NET Core3.1 调用AD域验证

时间:2022-12-21 10:01:32浏览次数:39  
标签:set AD get ret user Core3.1 NET public string

一、添加引用

  右击项目—— 管理NuGet程序包——分别搜索System.DirectoryServices、System.DirectoryServices.AccountManagement,安装

二、验证

        [HttpPost]
        [EnableCors("userLogin")]
        public Comm.ReturnModelByName checkLogin([FromBody] UserInfo user)
        {
            var ret = new Comm.ReturnModelByName();
            ret.EnName = "";
            string domainName = "10.10.10.1";
            PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName, user.UserName, user.Password);
            try
            {
                if(context.ValidateCredentials(user.UserName, user.Password))
                {
                    Dictionary<string, string> keyValuePairs = new Dictionary<string, string>
                {
                    { "userName", user.UserName }
                };
                    ret.Code = 200;
                    ret.Msg = "登录成功";
                    //获取中文姓名
                    string sql = "select cnname from Employee where code = '" + user.UserName + "'";
                    DataTable dt = SQLHelper.ExecuteDataTable(sql);
                    if(dt != null && dt.Rows.Count > 0)
                    {
                        ret.EnName = dt.Rows[0]["cnname"].ToString();
                    }
                    ret.TnToken = tokenHelper.CreateToken(keyValuePairs);
                }
                else
                {
                    ret.Code = 500;
                    ret.Msg = "用户名或者密码错误" ;
                }
               
            }
            catch (Exception ex)
            {
                ret.Code = 500;
                ret.Msg = "登录失败:" + ex.Message;
            }
            return ret;
        }

        public class UserInfo
        {
            /// <summary>
            /// 用户名
            /// </summary>
            public string UserName { get; set; }
            /// <summary>
            /// 密码
            /// </summary>
            public string Password { get; set; }
        }

 

 public class ReturnModelByName
        {
            /// <summary>
            /// 返回码
            /// </summary>
            public int Code { get; set; }
            /// <summary>
            /// 消息
            /// </summary>
            public string Msg { get; set; }
            /// <summary>
            /// 数据
            /// </summary>
            public object Data { get; set; }
            /// <summary>
            /// Token信息
            /// </summary>
            public TnToken TnToken { get; set; }

            public string EnName { get; set; }
        }

  

三、开放端口,如果无法调用,需要防火墙开放389端口

标签:set,AD,get,ret,user,Core3.1,NET,public,string
From: https://www.cnblogs.com/ydc2023/p/16995598.html

相关文章

  • wpsjs / wps addin
     npminstall-gwpsjswpsjscreateHelloWpscdHelloWpsnpmupdate--save-devwps-jsapiwpsjsdebugwpsjsbuildwpsjspublish //package.jsonaddtwo......
  • .net core webapi跨域处理
    一、引入cors组件右击项目——在终端中打开——dotnetaddpackageMicrosoft.AspNetCore.Cors--version2.0.1   二、配置cors在项目根目录的Startup.c......
  • PowerDotNet平台化软件架构设计与实现系列(15):支付平台
    PowerDotNet个人项目中功能全面而强大的一个系统是支付平台。我对PowerDotNet的自信很大程度上来自于经过PowerDotNet重写后的支付、财务、结算、CRM等业务型公共服务系统......
  • MySQL Threads Running
    1、 广电告警背景如下: 主机:xxxx:3306,MySQL运行的Thread大于30,请关注,2021-07-1515:30:002、猜测是因为业务量造成?3、mysqlthreadrunning的理解  每秒查询次数(Qu......
  • RT-Thread使用qboot升级文件过大导致升级失败
    RT-Thread使用qboot升级文件过大导致升级失败问题:使用编译器编译出大小为397k的bin包后使用qboot的打包工具进行打包成rbl文件。qboot报错此时分区信息为:问题排查及......
  • 如何在 .Net 7 中将 Query 绑定到数组
    在.Net7中,我们可以通过绑定数组的方式来接收来自查询字符串的参数。这样就不需要再使用逗号分隔的字符串来获取参数了。代码演示假设我们需要从query上接受多个id......
  • kubernetes-pod
    Pod作为k8s的核心对象,所有的k8s功能都必须通过Pod来实现。如何使用YAML描述PodPod是一个API对象,它必然具有apiVersion、kind、metadata、spec这四个字段apiVersion:v1......
  • kubernetes-使用yaml
    查询k8s支持的对象kubectlapi-resources#查看当前版本支持的所有对象kubectlexplainpodkubectlexplainpod.metadatakubecltexplainpod.speckubecltexplai......
  • 基于.NetCore开发博客项目 StarBlog - (24) 统一接口数据返回格式
    前言开发接口,是给客户端(Web前端、App)用的,前面说的RESTFul,是接口的规范,有了统一的接口风格,客户端开发人员在访问后端功能的时候能更快找到需要的接口,能写出可维护性更高的......
  • Netflix
    2009年Netflix举办了一场Netflix大奖赛。他们公开一批匿名数据,允许参赛团队使用以得出更好的算法。他们从获胜的团队中得到了现有算法10.06%的提升。Netflix本想再举行一场N......