|
分類:[C#]
■No6280に返信(中博俊さんの記事) > ・・・ > ごめんおいらじゃわからん。 > HTMLなんかどうでもいいからソース載せて。 > どうなって欲しいのかもう一度整理して
private void btnLoginTest_Click(object sender, System.EventArgs e) { InHeader inHeader = new InHeader();
try { //ログイン日を取得 string login_date = DateTime.Today.ToString("yyyy/MM/dd");
//InHeader情報設定 inHeader.Login_Date = DateTime.Now.ToString(); inHeader.ScreenId = ScreenConst.LOGIN_SCREENID; inHeader.ScreenName = ScreenConst.LOGIN_SCREENNAME; inHeader.UserInfo = new UserAccount(); inHeader.UserInfo.Syain_Code = SYSTEM_USER_ID; inHeader.UserInfo.Syain_Name = SYSTEM_USER_NAME; inHeader.UserInfo.S_Code = SYSTEM_S_CODE;
//ユーザー情報取得 InLoginTestServiceGetLoginInfo inParam = new InLoginTestServiceGetLoginInfo(); OutLoginTestServiceGetLoginInfo outParam; LoginService txn = new LoginService();
inParam.Header = inHeader; inParam.LoginId = txtLoginTest.Text.Trim(); inParam.Password = txtPasswordTest.Text.Trim(); outParam = txn.GetLoginTestInfo(inParam); if( outParam.Header.Status == Const.STS_WARNING ) { this.txtLoginMessage.Text = outParam.loginId_false_message; return; } else if( outParam.Header.Status == Const.STS_ERROR ) { base.SetReturnStatsu(inParam.Header, outParam.Header); return; }
// セッション登録 SessionState.Save(Page, SESSION_USERINFO, outParam.UserAccountInfo);
//入力された社員コードをContext.Itemsにセット Context.Items[CONTEXTITEM_SYAIN_CODE] = inParam.LoginId;
//ロール情報取得 RoleInfo[] roleInfo = (RoleInfo[])Cache[CACHE_ROLEINFO]; if( roleInfo == null ) { RoleService txnRoleService = new RoleService(); InRoleServiceGetRoleInfo inRoleServiceGetRoleInfo = new InRoleServiceGetRoleInfo(); OutRoleServiceGetRoleInfo outRoleServiceGetRoleInfo = new OutRoleServiceGetRoleInfo();
inRoleServiceGetRoleInfo.Header = inHeader; outRoleServiceGetRoleInfo = txnRoleService.GetRoleInfo(inRoleServiceGetRoleInfo); if( !base.SetReturnStatsu(inHeader, outRoleServiceGetRoleInfo.Header) ) { return ; }
//サーバーキャッシュに登録 Cache[CACHE_ROLEINFO] = roleInfo = outRoleServiceGetRoleInfo.Role_Info; }
//パスワードのロックフラグ・初回フラグ判定 //どちらかの条件にあえば強制的にパス変更画面へ遷移 //セッションにログインタイプをセット if (!outParam.first_login_flg) { //初回ログインフラグが「なし」なら // セッション登録 SessionState.Save(Page, SESSION_LOGIN_FLG_KEY, LOGINTYPE_FIRST); //Server.Transfer(base.GetScreenPath(ScreenConst.SA006_PATH)); Response.Redirect(base.GetScreenPath(ScreenConst.SA006_PATH), true); return ; } else if ( DateTime.Parse(login_date) > outParam.password_effect_date ) { //パスワードの有効期限が切れていたら // セッション登録 SessionState.Save(Page, SESSION_LOGIN_FLG_KEY, LOGINTYPE_LIMIT); Response.Redirect(base.GetScreenPath(ScreenConst.SA006_PATH), true); return ; }
//チケット発行 System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.txtLoginTest.Text.Trim(), false);
//初期表示画面表示 if( base.CheckControl_Code(ScreenConst.MAINMENU_SCREENID, TypeConst.Control_Type.VIEW)) { string TargetUrl = "/WebApplication/MainDummy.htm"; string script; string sendpath; int Width = 900; int Height = 700;
sendpath = TargetUrl + "?&" + DIALOGBOX_SEND_PARAM_ISPOPUP + "=" + TypeConst.AriNashi.FLG_ARI;
script = "<SCRIPT LANGUAGE='javascript'>"; // script += Environment.NewLine + "window.showModalDialog('" + sendpath + "', '_Brank', 'status=yes,dialogWidth=" + Width.ToString() + "px,dialogHeight=" + Height.ToString() + "px,toolbar=no,resizable=yes,scrollbars=yes,help=no');"; script += Environment.NewLine + "window.showModalDialog('" + sendpath + "', '_Brank', 'status = yes;dialogWidth=" + Width.ToString() + "px;dialogHeight=" + Height.ToString() + "px;resizable = yes;help=no ; scroll = yes');"; script += Environment.NewLine + "</SCRIPT>";
Response.Write(script); // Response.Redirect(base.GetScreenPath(ScreenConst.MAINMENU_PATH), true); } else if( base.CheckControl_Code(ScreenConst.SA351_SCREENID, TypeConst.Control_Type.VIEW)) { Server.Transfer(base.GetScreenPath(ScreenConst.SA351_PATH)); } else { base.OpenApplicationError(inHeader, Utility.SetOutHeader(MsgConst.CMN_ERROR_NOTHING_ROLEINFO)); }
} catch(Exception ex) { throw new Exception(ex.Message, ex); }
}
【WebConfig】 <authentication mode="Windows" />
<authorization> <allow users="*" /> <!-- 全ユーザーへの許可 --> </authorization>
以上が現状のログインボタン押下時+Webconfig(一部)のソースです。
どうなって欲しいのか は、 フォーム認証を適用させて不正遷移をされた場合、ログイン画面へ強制遷移させたいのです。 現状、今の状況ではshowModalDialog実行時にhttpエラーが起こります。 チケット発行を行わなければ普通に動作はするのですが、不正遷移もできてしまいます(セッションがないので結局は表示されないのですが、ここでは置いておきます)。WebConfigだけ最初の投稿時のように修正すると、ログイン画面がループします。 とても分かりにくい説明で本当に申し訳ございません。
|