aba*_*hev 46 .net c# asp.net authentication active-directory
是否有任何内置的实用程序或帮助程序来解析HttpContext.Current.User.Identity.Name,例如domain\user,如果存在和用户单独获取域名?
或者还有其他课程吗?
我知道这很容易打电话String.Split("\")但很有意思
Aen*_*dhe 69
这是更好的(更容易使用,没有机会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;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
IIdentity id = HttpContext.Current.User.Identity;
id.GetLogin();
id.GetDomain();
Run Code Online (Sandbox Code Playgroud)
这需要C#3.0编译器(或更新版本),并且在编译后不需要3.0 .Net来工作.
Sta*_*Cub 13
System.Environment.UserDomainName 仅为您提供域名
同样,System.Environment.UserName仅为您提供用户名
var components = User.Identity.Name.Split('\\');
var userName = components.Last()
var domainName = components.Reverse().Skip(1).FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
你们还可以考虑解析像“user@company.com”或“user@domain”这样的字符串输入。
这就是我当前正在做的事情:
如果字符串包含“\”,则在“\”处拆分字符串并提取用户名和域,
否则如果字符串包含“@”,则在“@”处拆分字符串并提取用户名和域,
否则将字符串视为不带域名的用户名
在输入字符串不是易于预测的格式(即“domain\user@domain”)的情况下,我仍在寻找更好的解决方案。我在想正则表达式...
更新:我纠正了。我的答案有点脱离上下文,它指的是从用户输入中解析用户名和域的一般情况,例如在用户登录/登录提示中。希望它仍然对某人有帮助。
| 归档时间: |
|
| 查看次数: |
41702 次 |
| 最近记录: |