【发布时间】:2012-02-16 12:13:04
【问题描述】:
我对所有网络事物都很陌生,所以这个问题可能看起来微不足道,但对我来说不是。实现逻辑是:
ASP.NET MVC 3 -> WCF 服务 -> SQL 数据库
ASP.NET MVC3 中的身份验证和授权使用自定义成员资格和角色提供程序,因为所有登录详细信息都存储在 SQL 数据库中。 也需要实现对 WCF 服务的授权。它使用与 ASP.NET MVC 3 相同的凭据。 我已经使用自定义 UsernameValidator 为 WCF 安全性实现了用户名类型。
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="UserName" />
</security>
它第一次工作,当用户登录到网站时,因为有凭据。但是,在 ASP.NET MVC 3 上的 FormsAuthentication.SetAuthCookie 之后,用户名就是我所拥有的。 由于 MVC 方法由各种控制器组成,因此我必须在每个控制器上创建 WCF 客户端实例。但是没有凭据就没有意义。
[Authorize]
public class MyController : Controller
{
private WebServiceClient ServiceClient = new WebServiceClient();
public ActionResult Index(string userName)
{
var model = ServiceClient.GetDataList();
return View(model);
}
}
新实例不使用现有会话。它使用空白凭据创建一个新的。
- 是否有一种安全的方法可以为每个会话创建 WCF 客户端实例?
- 或者 WCF 接受 ASP.NET 身份验证的选项?
- 将 asp.net 身份验证附加到 wcf 的最佳方法是什么 请求?
【问题讨论】:
-
在这里查看这篇文章:stackoverflow.com/questions/3460435/…,甚至更好的是这里的这篇文章:stackoverflow.com/questions/3451578/…
-
感谢您的链接。第一个非常有用。
-
不错的一个。很高兴您找到了解决方案。
标签: asp.net-mvc asp.net-mvc-3 wcf authentication