- PR -

フォーム認証

1
投稿者投稿内容
青森
会議室デビュー日: 2007/05/27
投稿数: 16
投稿日時: 2007-07-31 23:24
フォーム認証について教えて下さい。

環境: windows2003 Server + .net 2.0
SQLServer2005

認証していないユーザをログイン画面へ強制遷移させる為Form認証を使用しています。
ログインユーザ情報はDBに格納し、独自にSQLを発行しユーザ認証を行います。
画面遷移の権限等はログイン時にDBより権限コードを取得し、セッションで持ち回りRoleは使用していません。

皆さんの投稿とWEB情報より以下のコーディングとし、動作できましたが
自分で記述した内容に理解できていない点があります。


以下のの"a-1,a-2,a-3"と"b-1"は両方とも必要なのでしょうか。
どちらか片方だけでもよいのかと。


---ログイン画面の入力情報が妥当な場合に以下の処理を行う---
//a-1
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
argUserID,
DateTime.Now,
DateTime.Now.AddMinutes(30),
persistent,
argRole
);

//a-2
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
FormsAuthentication.Encrypt(ticket)
);

//a-3
Response.Cookies.Add(cookie);

//b-1
FormsAuthentication.SetAuthCookie(argMradrs, false);

//c
Response.Redirect("XXX.aspx", false);

---------------------------------------------------------------------

閉じるボタンでは、Session.clearとFormsAuthentication.signoutを実行しています。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-08-01 10:33
引用:

青森さんの書き込み (2007-07-31 23:24) より:

皆さんの投稿とWEB情報より以下のコーディングとし、動作できましたが
自分で記述した内容に理解できていない点があります。

以下のの"a-1,a-2,a-3"と"b-1"は両方とも必要なのでしょうか。
どちらか片方だけでもよいのかと。


ひとつひとつ消して試してみるといいと思います。

あと仕様によるけれど、最後の Redirect は FormsAuthentication.RedirectFromLoginPage のがいいかな?

_________________
かるあ のメモスニペット
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-08-01 10:36
もうひとつ、
引用:

青森さんの書き込み (2007-07-31 23:24) より:

閉じるボタンでは、Session.clearとFormsAuthentication.signoutを実行しています。


閉じるボタンっていうのは IE の閉じるボタン(×) ですか?
どんなふうに実装しているかわからないけれどうまくいく保証がないので、
ログアウトボタンのようなものを画面に用意してこちらでやったほうがいいですね。

_________________
かるあ のメモスニペット
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-08-01 10:44
たぶんb-1だけでいいんじゃないかと思います。
かるあさんが言ってるように実際に確認してみるのがいいでしょうね。

FormsAuthentication.RedirectFromLoginPageを利用するには
ログイン画面に移動する時点でリダイレクト先の情報が付加されて
いないといけないですね。

このあたり、標準のコントロール使っていれば設定は必要ですけど
プログラミングは必要ないんですけどね。。。

#用意されているもの使うほうがいいとは思うんだけどなぁ。
 標準のコントロールも結構柔軟なつくりになってるから、いろんな要件にあわせられるのに。
1

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