Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将ASP.NET权限绑定到WCF服务_C#_Wcf_Asp.net Membership - Fatal编程技术网

C# 如何将ASP.NET权限绑定到WCF服务

C# 如何将ASP.NET权限绑定到WCF服务,c#,wcf,asp.net-membership,C#,Wcf,Asp.net Membership,我正在创建一个大型ASP.NET 4站点,该站点具有WCF服务后端。我想为该网站使用的登录和授权服务 基本上,当用户进入登录页面时,我希望使用WCF服务作为身份验证机制,而不是使用成员资格提供者 WCF服务已经使用身份验证和授权(带有模拟),因此,如果服务的客户端尝试执行其无权执行的服务方法,则会收到错误 问题是我如何将其与ASP.NET站点联系起来 下面是我正在使用的一些示例代码: Web服务接口: [ServiceContract] public interface IService {

我正在创建一个大型ASP.NET 4站点,该站点具有WCF服务后端。我想为该网站使用的登录和授权服务

基本上,当用户进入登录页面时,我希望使用WCF服务作为身份验证机制,而不是使用成员资格提供者

WCF服务已经使用身份验证和授权(带有模拟),因此,如果服务的客户端尝试执行其无权执行的服务方法,则会收到错误

问题是我如何将其与ASP.NET站点联系起来

下面是我正在使用的一些示例代码:

Web服务接口:

[ServiceContract]
public interface IService
{
    [OperationContract]
    bool Foo();

    [OperationContract]
    void Bar();
}
网络服务:

public class BackEndService : IService
{
    [PrincipalPermission(SecurityAction.Demand, Role="FooRole")]
    public bool Foo()
    {
        return false;
    }

    [PrincipalPermission(SecurityAction.Demand, Role="Bar")]
    public void Bar()
    {
        //...
    }
}
在客户机上:

public class LoginPage : Page
{
    public void LoginButton_Clicked(object sender, EventArgs e)
    {
        string username = TxtUsername.Value;
        string password = TxtPassword.Value;

        BackEndService client = new BackEndService();
        client.CleintCredentials.Username = username;
        client.ClientCredentials.Password = password;

        client.Foo(); //if the credentials supplied do not have permissions there will be error
        client.Bar();
    }
}
我的目标是使UI元素的某些功能标记为PrincipalPermission属性,这样用户就不必访问服务来发现自己没有权限

此外,我希望根据用户的权限加载/卸载一些UI元素

是否有可能,或者我必须在我的服务中加入一些逻辑,以返回用户可以看到的任何UI模块?在UI元素的代码隐藏中使用PrincipalPermissionAttribute时,是否可以像处理成员资格提供者一样通过服务处理权限

谢谢

<bleepzter/>

如果您想使用ASP.NET成员资格,您需要编写自己的成员资格提供程序,以根据您的WCF服务进行身份验证。您可能需要向WCF服务添加操作,以返回用户所属角色的列表。然后,您可以使用
成员资格
类来确定用户是否是特定角色,并根据需要隐藏/显示UI元素


有关创建成员资格提供程序的详细信息,请参阅。

如果要使用ASP.NET成员资格,则需要编写自己的成员资格提供程序,以根据WCF服务进行身份验证。您可能需要向WCF服务添加操作,以返回用户所属角色的列表。然后,您可以使用
成员资格
类来确定用户是否是特定角色,并根据需要隐藏/显示UI元素


有关创建会员资格提供商的更多信息,请参阅。

我很害怕。我想我会用我自己的逻辑来隐藏和显示没有成员资格的UI。我很害怕。我想我会使用自己的逻辑来隐藏和显示没有成员资格的UI。