我现在想在web程序中发送邮件(或类似需要域验证的功能),其中Credentials我想使用当前登陆用户的。
请问在这个时候怎么获取密码或有什么别的方式处理?
获取用户的密码,这个肯定你就别想了,这是不道德的。
至于你想用当前登录用户发邮件,估计你是用Domain Controller + Exchange Server吧?
提示一下:Google IIdentity IPrincipal.
推荐一篇CodeProject文章
邮件只是举例,我的表达可能不是特别清楚,IIdentity IPrincipal这些我都理解。
我现在为公司开发了一个WEB程序,我们公司有自己的邮件服务器和域服务器,现在我要发邮件,那么就要通过域验证。变通来说可以通过一个特定的用户进行域验证,但是如果涉及到请求一些Windows资源(邮件中的附件),需要按权限控制的对像(例如TFS),那么这个特定用户就明显不合适了,因此需要当前访问web站点的这个用户的ICredential。
请问这时怎么获取or创建ICredential的实例呢?
@炎髪灼眼の讨ち手:
Controller in MVC has a property User
which is IPrincipal
.
http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.user%28v=vs.108%29.aspx
IPrincipal
has an Identity
property
which is of type IIdentity
http://msdn.microsoft.com/en-us/library/system.security.principal.iidentity%28v=vs.110%29.aspx
If you're using Windows Authentication the actual instance will be of type WindowsIdentity
http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity%28v=vs.110%29.aspx
Hopefully it will contain all the credential information you need.
Also, you might want to try:
Uri uri = new Uri("http://tempuri.org/");
ICredentials credentials = CredentialCache.DefaultNetworkCredentials;
NetworkCredential credential = credentials.GetCredential(uri, "Basic");
如果要获取密码,需要拿域用户名去域服务器上查询。