是否可以将当前用户的FormsAuthentication身份转发给另一个Controller操作?

Adr*_*ore 1 asp.net authentication asp.net-mvc forms-authentication

我想将ASP.NET MVC的视图用作邮件模板引擎.为此,我使用System.ComponentModel.Component.WebClient从另一个控制器操作调用一个控制器操作,解析返回的网页并通过电子邮件发送.

在这种情况下,是否可以将当前用户的登录凭据(我使用FormsAuthentication)转发到WebClient请求的控制器操作?用户密码是加密的,因此我不能仅使用其用户名和密码创建新的NetworkCredentials实例.

chr*_*166 5

是的,您可以将.ASPXAUTH cookie从当前Request对象复制到WebClient

编辑:我自己实际上没有尝试过,因此出于安全原因,可能会从Request对象中删除.ASPXAUTH cookie.

但由于您可以访问机器密钥,因此您可以动态创建自己的cookie.这是应该做的代码(我找不到我实际做的那个项目)

var ticket = new FormsAuthenticationTicket(User.Identity.Name, true, 5);
string aspxAuthCookieValue = FormsAuthentication.Encrypt(ticket);
Run Code Online (Sandbox Code Playgroud)

此代码为您当前的用户名创建表单身份验证cookie,并且到期时间为5分钟.