2013-09-28 16 views
5

回答:Microsoft.AspNet.FriendlyUrlsAsp.net 4.0フォーム認証とFriendlyUrls

私はフォーム認証とFriendlyUrlsを使用しています。私は "Register.aspx"というファイルを含む "Account"という名前のサブディレクトリを持っています。私はファイル "Register.aspx"に許可を与え、web.configを介して他のすべてのファイルのアクセス許可を拒否する必要があります。私は様々な設定を試みましたが、ファイルRegister.aspxは許可を得ていません。

web.configファイル

<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="Account/login" name="LOGIN" defaultUrl="Account/Logged" timeout="15" cookieless="UseDeviceProfile" protection="All" slidingExpiration="true" /> 
    </authentication> 
    </system.web> 

    <location path="Account"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

    <location path="Account/Register"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 

答えて

0

*変更、コードの下にこれを試してみてください代わりに?

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

この非常に良い説明を参照してください:http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

+0

私はすでにそれを試しています。しかし、ルート「アカウント/登録」にアクセスすると、私はログインページにリダイレクトされます。 – Marcoscdoni

1

私はFriendlyURLsとフォーム認証(OWINが)と、これと同じ問題がありました。許可されたコンテンツページにアクセスしようとすると、/ Account/Loginにリダイレクトしようとしましたか?returnUrl =%2FAccount%2FLogin、リダイレクトがクエリ文字列が最大長を超えるまで無限ループに詰まってしまいました。私はそれを見つけることができる方法は、ログインページ(またはanonアクセスを許可する他のページ)を自分のフォルダに置き、そのページ自体ではなくそのフォルダへのアクセスを許可することでした。だから私は/アカウント/ログインを持っていた場合、私は追加します。

<system.web>  
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 

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

を私はあなたが/アカウントパスのルールを追加したが、拒否するように設定している参照してください。あなたがそれをローカルに許可するかどうかを変更したかどうかは分かりません。

私はMS OWINのフォーム認証ライブラリを使用していますが、デフォルトのASP.Netビルトインのものではありませんが、 1つだけ。参考までに、フォーム認証の認証設定は次のようになります。

public void ConfigureAuth(IAppBuilder app) 
    { 
     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      AuthenticationMode = AuthenticationMode.Active, 
      LoginPath = new PathString("/Account/Login"), 
      LogoutPath = new PathString("/Account/Logout"), 
      ExpireTimeSpan = TimeSpan.FromHours(12), 
      SlidingExpiration = true, 
      CookieName = "MyCookieName.Session", 
      CookieSecure = CookieSecureOption.SameAsRequest, 
      // Required for AJAX calls 
      CookieHttpOnly = false 
     }); 
    } 
関連する問題