问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在RIA Service中启用身份验证

发布网友 发布时间:2022-05-26 05:00

我来回答

2个回答

热心网友 时间:2024-03-27 09:09

其中显示了您必须同时添加到服务器项目和客户端项目的代码,以确保身份验证成为客户端应用程序的一项服务。通过将 RequiresAuthenticationAttribute 属性应用到域操作,可以将对域操作的访问*为已通过身份验证的用户。 WCF RIA Services 中的身份验证依赖 ASP.NET 中的身份验证框架。有关 ASP.NET 身份验证的更多信息,请参见 Introction to Membership(成员资格简介)。配置服务器项目在服务器项目中,打开 Web.config 文件。在 元素中,添加一个 元素。将mode 属性设置为您要在项目中使用的身份验证模式。下面的代码显示将 mode 设置为 Forms 的 元素。将 mode 属性设置为 Windows 以使用 Windows 身份验证。您的 Web.config 文件将包含其他元素。 保存Web.config 文件。在“解决方案资源管理器”中,右击服务器项目,选择“添加”,然后选择“新建项”。将显示“添加新项”对话框。选择“身份验证域服务”模板,并指定该服务的名称。单击“添加”。若要将对域操作的访问*为已通过身份验证的用户,请将 RequiresAuthenticationAttribute 属性应用到域操作。下面的示例指定只有已通过身份验证的用户才可以访问 GetSalesOrderHeaders 方法:VB _ PublicFunction GetSalesOrderHeaders() As IQueryable(Of SalesOrderHeader) ReturnMe.ObjectContext.SalesOrderHeaders EndFunctionCS [RequiresAuthentication()] public IQueryable GetSalesOrderHeaders() { return this.ObjectContext.SalesOrderHeaders; } 生成解决方案。在客户端项目上配置身份验证服务在客户端项目中,打开 App.xaml 文件的代码隐藏文件(App.xaml.cs 或 App.xaml.vb)。在构造函数中,创建 WebContext 类的实例。将Authentication 属性设置为您在服务器项目中配置的身份验证类型,并将 WebContext 实例添加到 ApplicationLifetimeObjects。下面的示例显示如何将身份验证设置为 FormsAuthentication:VBPublicSubNew() InitializeComponent() Dim webcontext AsNew WebContext webcontext.Authentication = New System.ServiceModel.DomainServices.Client.ApplicationServices.FormsAuthentication Me.ApplicationLifetimeObjects.Add(webcontext) EndSubCS public App() { this.Startup += this.Application_Startup; this.UnhandledException += this.Application_UnhandledException; InitializeComponent(); WebContext webcontext = new WebContext(); webcontext.Authentication = new System.ServiceModel.DomainServices.Client.ApplicationServices.FormsAuthentication(); this.ApplicationLifetimeObjects.Add(webcontext); } 如果您使用的是 Windows 身份验证,或您要加载具有持久化凭据的用户,请在向用户显示登录选项前调用 LoadUser 方法。下面的示例显示如何从 Application_Startup 方法调用 LoadUser 方法:VBPrivateSub Application_Startup(ByVal o AsObject, ByVal e As StartupEventArgs) HandlesMe.Startup WebContext.Current.Authentication.LoadUser(AddressOf OnLoadUser_Completed, Nothing) Me.RootVisual = New MainPage() EndSubPrivateSub OnLoadUser_Completed(ByVal operation As LoadUserOperation) ' Update UI, if necessaryEndSubCS private void Application_Startup(object sender, StartupEventArgs e) { WebContext.Current.Authentication.LoadUser(OnLoadUser_Completed, null); this.RootVisual = new MainPage(); } private void OnLoadUser_Completed(LoadUserOperation operation) { // update UI, if necessary } 如有必要,将一个页添加到客户端项目以收集用户凭据。在登录页的代码隐藏文件中,调用 Login 方法以使用户登录。下面的示例显示如何从登录按钮的事件处理程序调用 Login 方法。包含一个回调方法来响应登录操作的结果。VBPrivateSub LoginButton_Click(ByVal sender AsObject, ByVal e As RoutedEventArgs) Dim lp As LoginParameters = New LoginParameters(UserName.Text, Password.Password) WebContext.Current.Authentication.Login(lp, AddressOfMe.LoginOperation_Completed, Nothing) LoginButton.IsEnabled = False LoginResult.Text = ""EndSubPrivateSub LoginOperation_Completed(ByVal lo As LoginOperation) If (lo.HasError) Then LoginResult.Text = lo.Error.Message LoginResult.Visibility = System.Windows.Visibility.Visible lo.MarkErrorAsHandled() ElseIf (lo.LoginSuccess = False) Then LoginResult.Text = "Login failed. Please check user name and password." LoginResult.Visibility = System.Windows.Visibility.Visible ElseIf (lo.LoginSuccess = True) Then SetControlVisibility(True) EndIf LoginButton.IsEnabled = TrueEndSubCS private void LoginButton_Click(object sender, RoutedEventArgs e) { LoginParameters lp = new LoginParameters(UserName.Text, Password.Password); WebContext.Current.Authentication.Login(lp, this.LoginOperation_Completed, null); LoginButton.IsEnabled = false; LoginResult.Text = ""; } private void LoginOperation_Completed(LoginOperation lo) { if (lo.HasError) { LoginResult.Text = lo.Error.Message; LoginResult.Visibility = System.Windows.Visibility.Visible; lo.MarkErrorAsHandled(); } else if (lo.LoginSuccess == false) { LoginResult.Text = "Login failed. Please check user name and password."; LoginResult.Visibility = System.Windows.Visibility.Visible; } else if (lo.LoginSuccess == true) { SetControlVisibility(true); } LoginButton.IsEnabled = true; } 若要注销用户,请调用 Logout 方法。下面的示例显示如何从注销按钮的事件处理程序调用 Logout 方法。包含一个回调方法来响应注销操作的结果。

热心网友 时间:2024-03-27 09:09

如何在RIA Service中启用身份验证
本文我将结合一个实例,一步一步地演示,然后在RIA Service中启用身份验证。包括在服务端的设计,和客户端的设计。
本文实例源代码,可以通过下面地址下载
http://files.cnblogs.com/chenxizhang/SilverlightRIAAuthenticationSample.rar

1. 创建项目,并添加一个业务用的Domain Service
作为演示,我们这里写了一个简单的方法

namespace SilverlightRIAAuthenticationSample.Web
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server;
using System.Runtime.Serialization;

// TODO: Create methods containing your application logic.
[EnableClientAccess()]
public class HomeDomainService : DomainService
{
[Query]
/// <summary>
/// 这个方法返回一些客户名称
/// </summary>
/// <returns></returns>
public IQueryable<Customer> GetCustomers()
{
return new[]{
new Customer(){ID=1,Name="Microsoft"},
new Customer(){ID=2,Name="Google"},
new Customer(){ID=3,Name="Apple"},
new Customer(){ID=4,Name="*"},
new Customer(){ID=5,Name="Yahoo"},
new Customer(){ID=16,Name="AOL"}
}.AsQueryable();
}
}

[DataContract]
public class Customer
{
[Key][DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
}

}

写好之后,分别编译网站项目和Silverlight项目。在Silverlight中应该可以看到一个自动生成的类型

2. 编写客户端代码
我简单地做了一个界面,用来显示由服务器返回的客户列表

<UserControl
x:Class="SilverlightRIAAuthenticationSample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">

<Grid
x:Name="LayoutRoot"
Background="White">
<StackPanel>
<TextBlock
Text="Customers List"
FontSize="40"></TextBlock>

<ListBox
ItemsSource="{Binding}"
Padding="10" Margin="10">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Name}"
FontSize="16"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Grid>
</UserControl>

同时,编写一些简单的后台代码(直接写在xaml.cs中)
using System.Windows;
using System.Windows.Controls;
using SilverlightRIAAuthenticationSample.Web;

namespace SilverlightRIAAuthenticationSample
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var ctx = new HomeDomainContext();
var op=ctx.Load<Customer>(ctx.GetCustomersQuery());
this.DataContext = op.Entities;
}
}
}

运行起来,我们可以看到如下的一个效果

到这里为止,我们就已经实现了一个简单的Silverlight+RIA Service的场景。这不是本文的重点,我们下面要实现的是,在这个设计的基础上添加身份验证的功能。
例如你可以假设一下:假如这个GetCustomers方法,并不是给所有用户都可以调用的,而是需要经过身份验证的用户才可以调用的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
右附件包块怎么治疗? 右侧附件区见混合性包块回声、大小约4 .9*4。8cm.包膜完整、内可见不... 网络学术资源网络学术资源的获取途径 请问:正式出版物一定是合法出版物吗? 正式出版发行的期刊有哪些 玉米莲藕排骨汤怎么做才好吃 电脑开机进入不了BOSS, 怎么关闭苹果手机的自动备份功能 钢结构制作与安装的阶段和要点 钢结构设计的基本概念、关键步骤和应用 支付宝认证身份证加载失败怎么办 苹果4,ios7.1.2系统,登录微信时验证身份环节一直显示加载中,怎么办? 没有软件可以借钱吗 ...悲情小说、拒绝校园、最好像《青城》《梧桐那么伤》这种、要求文笔华... 中小学教师资格考试的性质? 《梧桐那么伤》连载十一txt全集下载 2021中小学教师资格考试的性质是什么? 《梧桐那么伤》连载三十六txt全集下载 《梧桐那么伤》连载三十八电子书txt全集下载 乌鲁木齐铁路局2021招聘有没有过了资格审查通知面试的? 《梧桐那么伤》连载二十二电子书txt全集下载 《梧桐那么伤》连载三十五电子书txt全集下载 ...现在驾驶证到期了,可不可以在昆明换,要些什么手续? 《《梧桐那么伤》连载四》最新txt全集下载 《梧桐那么伤》连载八电子书txt全集下载 我的苹果电脑系统换成了xp的请问苹果电脑开机的自带声音怎么关求详细解... 想换工作,请问乌鲁木齐有什么好的单位可以去应聘? 《梧桐那么伤》最新txt全集下载 峨眉山供奉的是什么菩萨 ...要到期了,我不是昆明人,驾驶证是昆明的,在昆明换证需要暂住证吗... 我想去香港买块手表,价值五万多,戴在手上带回大陆还需要交关税吗? 在香港DFS免税店购买的手表等奢侈品在入境时用不用交关税?能退税吗? 在EBAY香港站,买了块表会被交税吗? 海口为什么会成为我国空气质量最高的地方? 绿色环保车对净化海口市的空气有什么作用? 从香港买二块手表回大陆要交税吗? 海南中联净化工程有限公司怎么样? 到香港买手表要不要交税 双鸟空气净化器怎么样,质量好吗 要是我从香港买平板和手表被查要缴税多少? 海口市哪里有甲醛检测的公司呀 在香港买欧米茄手表能比大陆便宜多少,另外过关的时候还要报税吗? 海南宏科医疗净化工程有限公司怎么样? 海口集美环境工程有限公司怎么样? 海南润东方节能环保产品有限公司怎么样? ...找点什么事做好呢?或者学些什么技术好呢?求大家帮忙给些建议,谢谢... 20岁女孩 没学历,学什么技术好,将来能有前途 离宁波市区最近的海滩在哪里 生产销售伪劣产品罪的规定是怎样的 生产销售伪劣产品罪的处罚标准