WebView2 応用テクニック

リクエスト時にBasic認証を行う

WebView2でリクエストする際にBasic認証を行う方法です。

Basic認証の設定されているページにアクセスしたときにCoreWebView2.BasicAuthenticationRequestedイベントが発生するので、
ここでID/パスワードを設定します。

				//C#
				webView2.CoreWebView2.BasicAuthenticationRequested += delegate (
					object sender,
					CoreWebView2BasicAuthenticationRequestedEventArgs args)
				 {
					 args.Response.UserName = "test";
					 args.Response.Password = "password";
				 };
			

サンプル

Basic認証用のテストページにアクセスするサンプルです。
ブラウザで普通にアクセスするとBasic認証のダイアログが表示されますが、
以下のコードではダイアログは表示されずに認証後のページが表示されます。

						Imports Microsoft.Web.WebView2.Core

						Public Class Basic
						
							Private Async Sub Basic_Load(sender As Object, e As EventArgs) Handles MyBase.Load
						
								Await InitializeAsync()
						
							End Sub
						
							Private Async Function InitializeAsync() As Task
						
								Await wv2.EnsureCoreWebView2Async(Nothing)
						
								'Basic認証のID/パスワードを指定
								AddHandler wv2.CoreWebView2.BasicAuthenticationRequested,
									Sub(sender As Object, args As CoreWebView2BasicAuthenticationRequestedEventArgs)
										args.Response.UserName = "test"
										args.Response.Password = "password"
									End Sub
						
							End Function
						
							Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
						
								'サイトを表示
								wv2.CoreWebView2.Navigate("https://web.biz-prog.net/test/basic/testpage_basic.html")
						
							End Sub
						
						End Class
					
				
						using System;
						using System.Windows.Forms;
						using Microsoft.Web.WebView2.Core;
						
						namespace WindowsFormsCS
						{
							public partial class Basic : Form
							{
								public Basic()
								{
									InitializeComponent();
								}
						
								private void Basic_Load(object sender, EventArgs e)
								{
									InitializeAsync();
								}
						
								async void InitializeAsync()
								{
									await webView2.EnsureCoreWebView2Async(null);
						
									//Basic認証のID/パスワードを指定
									webView2.CoreWebView2.BasicAuthenticationRequested += delegate (
									   object sender,
									   CoreWebView2BasicAuthenticationRequestedEventArgs args)
									{
										args.Response.UserName = "test";
										args.Response.Password = "password";
									};
								}
						
						
								private void button1_Click(object sender, EventArgs e)
								{
									if (webView2.CoreWebView2 == null) return;
						
									//サイトを表示
									webView2.CoreWebView2.Navigate("https://web.biz-prog.net/test/basic/testpage_basic.html");
								}
							}
						}
					

参考