C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: Yahooサイトのログイン状態の保持


(過去ログ 176 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■101189 / inTopicNo.1)  Yahooサイトのログイン状態の保持
  
□投稿者/ ハム (1回)-(2023/01/17(Tue) 09:03:02)

分類:[.NET 全般] 

Win11 64bit VS2022 C#
お世話になります。
CefSharpのChromiumWebBrowserを使ってWEBブラウザーアプリを作っています。
困っているのはYahooにログインしたことが記憶できず、アプリケーションを起動するたびに
ログイン操作を行っています。ログイン状態を保持するにはどのようにすればよいでしょうか。
宜しくお願いします。
引用返信 編集キー/
■101190 / inTopicNo.2)  Re[1]: Yahooサイトのログイン状態の保持
□投稿者/ 伝説のカレー (62回)-(2023/01/17(Tue) 09:40:26)
No101189 (ハム さん) に返信

たいていのWebサイトは認証が成功したときにランダムな文字列を生成して
cookieに保存してランダムな文字列を使って認証を行うと思うんですよ

Yahooも同じなんじゃないかなーと思ってログインしたときにcookieを保存して
ログイン後のリクエストではcookieを送信するようにしてみてはどうでしょうか
引用返信 編集キー/
■101198 / inTopicNo.3)  Re[1]: Yahooサイトのログイン状態の保持
□投稿者/ Azulean (1260回)-(2023/01/17(Tue) 21:37:19)
No101189 (ハム さん) に返信
> CefSharpのChromiumWebBrowserを使ってWEBブラウザーアプリを作っています。
> 困っているのはYahooにログインしたことが記憶できず、アプリケーションを起動するたびに
> ログイン操作を行っています。ログイン状態を保持するにはどのようにすればよいでしょうか。

CefSharp のデフォルトはプロセス終了時に Cookie を覚えません。
自ら設定しないとだめですが、対応されていますか?


https://agrimo.jp/wp/?page_id=19925
引用返信 編集キー/
■101199 / inTopicNo.4)  Re[2]: Yahooサイトのログイン状態の保持
□投稿者/ ハム (3回)-(2023/01/17(Tue) 22:58:58)
ご回答ありがとうございます。教えていただいたページのソースを
貼り付けてみてやってみようとしたのですが、エラーが出てしまって原因がわかりません。

エラーが出ている個所はForm_Load関数内の

cookieManager.SetStoragePath("cookies", true);
SetStoragePathの定義が含まれていないというエラー(C1061)


browserSettings.FileAccessFromFileUrls = CefState.Enabled;
browserSettings.UniversalAccessFromFileUrls = CefState.Enabled;

上記の2行もメソッドが定義に含まれていない(C1061)というエラー。


アセンブリ参照が不足していないことを確認してください、とのメッセージですが
参照にはライブラリ(CefSharp、CefSharp.Core,CefSharp.WinForms)が追加されています。

原因は何でしょうか。
宜しくお願いします。



引用返信 編集キー/
■101200 / inTopicNo.5)  Re[3]: Yahooサイトのログイン状態の保持
□投稿者/ 魔界の仮面弁士 (3544回)-(2023/01/18(Wed) 09:49:21)
No101199 (ハム さん) に返信
> cookieManager.SetStoragePath("cookies", true);
> SetStoragePathの定義が含まれていないというエラー(C1061)

GetGlobalCookieManager メソッドの戻り値は、
CefSharp 名前空間の ICookieManager インターフェイスですよね。


下記 API 仕様によれば、CefSharp 67.0.0.0 時点においては、
ICookieManager.SetStoragePath の存在が確認できます。
https://cefsharp.github.io/api/67.0.0/html/M_CefSharp_ICookieManager_SetStoragePath.htm

しかしながら、現在は API の仕様変更により削除されているそうです。
変更点については Issue #2743 にてアナウンスされています。
https://github.com/cefsharp/CefSharp/issues/2743
引用返信 編集キー/
■101201 / inTopicNo.6)  Re[4]: Yahooサイトのログイン状態の保持
□投稿者/ 魔界の仮面弁士 (3545回)-(2023/01/18(Wed) 09:57:31)
2023/01/18(Wed) 10:00:14 編集(投稿者)

No101200 (魔界の仮面弁士) に追記
> 現在は API の仕様変更により削除されているそうです。
> 変更点については Issue #2743 にてアナウンスされています。
> https://github.com/cefsharp/CefSharp/issues/2743


こんな記事が見つかりました。

[CefSharpでカスタムWebブラウザを作る - Qiita]
https://qiita.com/masahiro-furuichi/items/ff3a1abf25a64cef7cdd#cookie%E7%94%A8%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%8A%E3%81%BE%E3%81%91

以下引用:
>> Cookie用ディレクトリの設定(おまけ)
>>
>> バージョン73.1.xまでは、Cookie用のディレクトリはキャッシュ用フォルダと別に指定することが
>> できましたが、75.1.x以降はキャッシュ用ディレクトリ配下にCookieが作成されるようになり、
>> cookie用ディレクトリは個別に設定することはできなくなりました。バージョン73.1.x以前を使用
>> する場合は、ICookieManager.SetStoragePathを呼び出して、cookieのパスを指定します。呼び出しの
>> タイミングはIBrowserProcessHandler.OnContextInitializedになります。
>> 参考のために、設定例を以下に示します。※このメソッドは、75.1.x以降は使用できません。


https://qiita.com/masahiro-furuichi/items/ff3a1abf25a64cef7cdd#31-cefinitialize%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AB%E3%82%88%E3%82%8B%E5%88%9D%E6%9C%9F%E5%8C%96
>> 3.1 Cef.Initializeメソッドによる初期化
>>
>> Cef.Initializeメソッドでは、以下の設定を行います。
>>
>> キャッシュ用ディレクトリのパス
>> キャッシュ用ディレクトリは、ブラウザコンテンツのキャッシュのほかに
>> 以下の情報が格納されます。
>> ・history
>> ・cookie
>> ・indexedDB
>> ・localStorage
>> ・sessionStorage
>> ・application cache
>> キャッシュ用ディレクトリを設定するには、CefSettingsBase.CachePath
>> プロパティに絶対パスでキャッシュ用ディレクトリのパスを指定します。
>> nullを指定した場合は、キャッシュが作成されないインメモリモード
>> (incognito mode)になります。インメモリモードの場合、indexedDB、
>> localStorageおよびapplication cacheは、もちろん保存されなくなります。
引用返信 編集キー/
■101202 / inTopicNo.7)  Re[1]: Yahooサイトのログイン状態の保持
□投稿者/ WebSurfer (2604回)-(2023/01/18(Wed) 10:02:00)
No101189 (ハム さん) に返信

> 困っているのはYahooにログインしたことが記憶できず、アプリケーションを起動するたびに
> ログイン操作を行っています。ログイン状態を保持するにはどのようにすればよいでしょうか。

その「Yahooにログイン」の認証方式はどういうものでしょう? 

それが分からないと話が始まりませんが、普通によくある認証チケットをクッキーに入れて
やり取りしているのであろうと想像してレスします。

その場合、ログインに成功するとサーバーからは以下のようにクッキーの設定が応答ヘッダー
に含まれて送られてくるはずです。Fiddler やブラウザのディベロッパーツールで調べられる
ので、質問者さんの方でも調べてください。

Set-Cookie: .ASPXAUTH=...; expires=Wed, 30-Nov-2011 13:21:29 GMT; path=/; HttpOnly

上の例では、.ASPXAUTH がクッキー名、... が認証チケット、expires が有効期限です。

普通のブラウザ(Chrome とか Edge とか)の場合 expires 属性の有無によって以下の違いが
あります。

(1) expires あり

Set-Cookie: に expires=xxx; (xxx はもちろん将来の日付) が指定されると、ブラウザは
クッキーを HDD に保存します。

ブラウザを閉じたり Windows をシャットダウンしたりしても、再度ブラウザを立ち上げて
アクセスすれば、ブラウザはクッキーを HDD から取得してサーバーに送ります。

(2) expires なし

この場合、クッキーはブラウザのメモリにしか保持されません。従って、ブラウザを閉じ
ればクッキーは消えます。

CefSharp の ChromiumWebBrowser の場合は分かりませんが、普通のブラウザと同じでは
ないのでしょうか?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -