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

时间:2009-08-07 12:39:44

标签: asp.net asp.net-mvc authentication forms-authentication

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

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

2 个答案:

答案 0 :(得分:5)

是的,您只需将.ASPXAUTH Cookie从当前Request对象复制到WebClient

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

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

var ticket = new FormsAuthenticationTicket(User.Identity.Name, true, 5);
string aspxAuthCookieValue = FormsAuthentication.Encrypt(ticket);

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

答案 1 :(得分:1)

您不是在寻找类似“rendering a view to a string

的内容,而不是执行http请求