当前位置:  开发笔记 > 编程语言 > 正文

内置帮助程序将User.Identity.Name解析为Domain\Username

如何解决《内置帮助程序将User.Identity.Name解析为Domain\Username》经验,为你挑选了3个好方法。

是否有任何内置的实用程序或帮助程序来解析HttpContext.Current.User.Identity.Name,例如domain\user,如果存在和用户单独获取域名?

或者还有其他课程吗?

我知道这很容易打电话String.Split("\")但很有意思



1> Aen Sidhe..:

这是更好的(更容易使用,没有机会NullReferenceExcpetion和符合MS编码指南有关处理空字符串和空字符串):

public static class Extensions
{
    public static string GetDomain(this IIdentity identity)
    {
        string s = identity.Name;
        int stop = s.IndexOf("\\");
        return (stop > -1) ?  s.Substring(0, stop) : string.Empty;
    }

    public static string GetLogin(this IIdentity identity)
    {
        string s = identity.Name;
        int stop = s.IndexOf("\\");
        return (stop > -1) ? s.Substring(stop + 1, s.Length - stop - 1) : string.Empty;
    }
}

用法:

IIdentity id = HttpContext.Current.User.Identity;
id.GetLogin();
id.GetDomain();

这需要C#3.0编译器(或更新版本),并且在编译后不需要3.0 .Net来工作.


你在`GetLogin`中的return语句可以简化为`return s.Substring(stop + 1);`

2> StarCub..:

System.Environment.UserDomainName 仅为您提供域名

同样,System.Environment.UserName仅为您提供用户名


> System.Environment.UserDomainName`仅为您提供域名>>类似地,`System.Environment.UserName`仅为您提供用户名这将不适用于ASP.NET

3> Gruff Bunny..:
var components = User.Identity.Name.Split('\\');

var userName = components.Last() 

var domainName = components.Reverse().Skip(1).FirstOrDefault()

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有