发布网友 发布时间: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中启用身份验证