zoukankan      html  css  js  c++  java
  • Silverlight WCF RIA服务(三十二)身份验证、角色、个性化 3

    如何:在RIA Services中允许角色功能 使用角色,我们可以指定哪个验证用户组可以访问某些资源。WCF RIA Services中的角色功能是建立在ASP.NET的角色功能上的。 我们只有在用户已经被验证后,才能检索用户的角色信息。通过在域操作中的方法上使用RequireRoleAttribute属
      

    如何:在RIA Services中允许角色功能
    使用角色,我们可以指定哪个验证用户组可以访问某些资源。WCF RIA Services中的角色功能是建立在ASP.NET的角色功能上的。
    我们只有在用户已经被验证后,才能检索用户的角色信息。通过在域操作中的方法上使用RequireRoleAttribute属性,我们就可以限制角色中的成员对域操作的访问。

    配置服务端项目
    1. 在服务端项目中,打开Web.config文件。
    2. 在段中,添加元素。
     

    1
    2
    3
    4
    5
    6
    <SYSTEM.WEB>
      <AUTHENTICATION mode="Forms"></AUTHENTICATION>
      <ROLEMANAGER enabled="true"></ROLEMANAGER>
    </SYSTEM.WEB>


    3. 在成员数据库中,创建所需的角色并赋予用户所需的角色。更多详情,可看后面的章节。
    4. 要确保只有指定角色中的成员才能访问域操作,我们需要对域操作应用RequireRoleAttribute属性。
     

    1
    2
    3
    4
    5
    6
    7
    [RequiresRole("Managers")]
    public IQueryable<CUSTOMER> GetCustomers()
    {
        return this.ObjectContext.Customers;
    }



    在客户端使用角色
    1. 要检测是否用户属于要求的角色,使用Roles属性或调用WebContext.Current.User对象的IsInRole方法。下面示例了在调用域操作之前,检测是否用户属于Managers的角色。
     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    private void LoadRestrictedReports()
    {
        LoadOperation<SALESORDERHEADER> loadSales = context.Load(context.GetSalesOrderHeadersQuery().Take(numberOfRows));
        SalesOrdersGrid.ItemsSource = loadSales.Entities;
        SalesOrdersGrid.Visibility = System.Windows.Visibility.Visible;
     
        if (WebContext.Current.User.IsInRole("Managers"))
        {
            LoadOperation<CUSTOMER> loadCustomers = context.Load(context.GetCustomersQuery().Take(numberOfRows));
            CustomersGrid.ItemsSource = loadCustomers.Entities;
            CustomersGrid.Visibility = System.Windows.Visibility.Visible;
        }
        else
        {
            CustomersGrid.Visibility = System.Windows.Visibility.Collapsed;
        }
    }


    2. 如果想让WebContext对象在XAML中可用,那么在创建RootVisual之前,在Application.Startup事件中把当前WebContext实例添加到应用程序资源中。
     

    1
    2
    3
    4
    5
    6
    7
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        this.Resources.Add("WebContext", WebContext.Current);
        this.RootVisual = new MainPage();
    }

     

    Powered By D&J (URL:http://www.cnblogs.com/Areas/)
  • 相关阅读:
    磁盘挂载基本概念
    判断cache Line的作用
    map的用法
    java中关键字volatile的作用
    Java获取用户输入
    小白说编译原理lex和yacc环境配置-多图
    C++中对sprintf()函数的说明(转)
    解决VS编译DevExpress后Debug默认产生几个多余的语言包"de" "en" "es" "ja" "ru"的问题
    SqlServer发现不是默认端口1433该如何进行连接
    量化交易之接口篇 — 恒生UFX交易接口基本介绍说明
  • 原文地址:https://www.cnblogs.com/Areas/p/2172197.html
Copyright © 2011-2022 走看看