2013年2月22日金曜日

ASP.NET:Form認証のログインページでjavascriptやcss(外部ファイル)が効かない

ASP.NET のフォーム認証でハマりました。

web.configに以下を記述しForm認証を設定。

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" name=".ASPXFORMSAUTH" timeout="2880" defaultUrl="~/Top.aspx" />

</authentication>

そしたらログインページでjavascriptやcss、画像などの外部ファイルが効かなくなり、なんとも簡素なページが表示されてしまった。
原因はアプリケーションサイト内のすべてのコンテンツに対して認証がかかってしまったため。
ログイン認証が通れば普通に表示される。
ログインページに直接cssを書くのもありですが、画像はどうにもならない。

web.configに、認証の例外としたいフォルダを指定することで対応。
configurationタグ内に記載して下さい。

 <location path="common">
  <system.web>
   <authorization>
    <allow users="*"/>
   </authorization>
  </system.web>
 </location>


ついでに、認証後のReturnUrlが、直前のページではなく、一定のページで良い場合は
FormsAuthentication.RedirectFromLoginPage(USERID, False)
のかわりに
FormsAuthentication.SetAuthCookie(USERID, False)
Response.Redirect("/Top.aspx")

とします。



0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。