我是所有网络新手,所以这个问题可能看起来微不足道,但对我来说却不是。实现逻辑是:
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);
}
}
新实例不使用现有会话。它会创建一个带有空白凭证的新帐户。