- PR -

【ASP.NET】Forms認証とGlobal.asaxのメソッドの関係

投稿者投稿内容
ロンロン
ベテラン
会議室デビュー日: 2004/01/08
投稿数: 58
お住まい・勤務地: TOKYO
投稿日時: 2005-11-25 14:06
むむむ、
GenelicPrincipalクラスには引数無しのPublicコンストラクタが存在しないため、
シリアル化できませんね。

System.Xml.Serialization.XmlSerializer serializer
 = new System.Xml.Serialization.XmlSerializer(
   typeof(System.Security.Principal.GenericPrincipal));

●GenelicPrincipalコンストラクタ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemxmlserializationxmlserializerclassserializetopic1.asp

●似たネタ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=708&forum=7
http://dobon.net/vb/bbs/log3-4/2315.html

もうちょいググります。

[ メッセージ編集済み 編集者: ロンロン 編集日時 2005-11-25 14:10 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-25 19:21
引用:

ロンロンさんの書き込み(2005-11-25 14:06)より:

GenelicPrincipalクラスには引数無しのPublicコンストラクタが存在しないため、
シリアル化できませんね。


 すみません、そこまでチェックしていませんでした。

 ところで、私もうっかりしていましたが、
http://www.atmarkit.co.jp/fdotnet/aspnet/index/index.html
これの19回は、2005-11-23 09:15 に出していますが、その2ページ目はごらんになりました?こちらでいいんじゃないですか?

 で、問題は、「ロール情報が複数ある時」だと思います。これは、string 配列を、適当な連結文字をつけて単一の文字列に変換して、復元時には split すればいいですよね?
___________________________________________________________________
□ written by Jitta on 2005/11/25
□ Microsoft MVP for Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
ロンロン
ベテラン
会議室デビュー日: 2004/01/08
投稿数: 58
お住まい・勤務地: TOKYO
投稿日時: 2005-11-26 01:28
>>すみません、そこまでチェックしていませんでした。
いえいえ。
自前認証チケット発行のサイトへ誘導していただいた時点で9割解決してますから。
ありがとうございます。

>>19回は、2005-11-23 09:15 に出していますが、
>>その2ページ目はごらんになりました?こちらでいいんじゃないですか?
はい。前回「実現した」と書いたのはこの事例に即したサンプルで実現できたので、
あとはジェネプリ(いいのかこんな略でw)をシリアル化する方法を模索するだけでした。

>>string 配列を、適当な連結文字をつけて単一の文字列に変換して、
>>復元時には split すればいいですよね?
はい。Roleのstring配列はシリアル化するまでもなく、
適当なセパレータでJoin&Splitすれば解決済みですね。

残す課題としては、web.configのForms属性のtimeout値を取得し、
認証クッキーのExpire値に設定する方法ですが、これはかなり苦しそうですね。
(運用の観点からもできればここで一元管理したかった)

【Web.config】
<authentication mode="Forms">
 <forms name="hogechan" loginUrl="hogeLogin.aspx" timeout="10" />
</authentication>


※ところで、FormsAuthenticationTicket.Version プロパティ値って、
 何の役に立てるべきでしょう?

[ メッセージ編集済み 編集者: ロンロン 編集日時 2005-11-26 01:31 ]
ロンロン
ベテラン
会議室デビュー日: 2004/01/08
投稿数: 58
お住まい・勤務地: TOKYO
投稿日時: 2005-11-29 16:24
引用:

web.configのForms属性のtimeout値を取得する方法は?

【Web.config】
<authentication mode="Forms">
 <forms name="hogechan" loginUrl="hogeLogin.aspx" timeout="10" />
</authentication>


自己レスです。

object obj = System.Configuration.ConfigurationSettings.GetConfig("system.web/authentication");

上記ロジックでWeb.configにアクセスしたところ、
デバッガで確認する限りはobjは「System.Web.Configuration.AuthenticationConfig」クラスにて展開され、
formsタグのnameをはじめ、timeout属性も設定値が取れそうな雰囲気でしたが、
AuthenticationConfigクラス自体が外部公開されていないクラスのためキャストできず、
objにアクセスする事ができません。

・・・やや諦め路線なのですが、
何か他の方法等をご存知の方がいらっしゃいましたらアドバイスお願いします。

Jiita氏色々とありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)