有効なユーザがシステムにログインしてログアウトせずにブラウザを終了すると、時折(つまり、直後ではなく、翌日に)、そのディレクトリまたはページを表示する権限がありません。ユーザーはシステムにログインして次のものを投げます。ASP.NET:403 - 禁止:アクセスが拒否されました。
エラー:403 - アクセスが拒否されました。指定した資格情報を使用して、このディレクトリまたはページを表示する権限がありません。このquestion
は同じ問題を参照するが、彼の溶液中で、彼は希望ソリューションではありませんFormsAuthenticationTicketを作成する際のパラメータとして偽を渡すことで、永続的なCookieを使用しないことを決めました。
private void createCookie(string username, int customerID, bool persist)
{
HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, persist);
cookie.Expires = DateTime.Now.AddHours(12);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var userData = customerID.ToString();
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, userData);
cookie.Value = FormsAuthentication.Encrypt(newTicket);
Response.Cookies.Add(cookie);
}
これを解決する方法上の任意のアイデアを:
これは私がクッキーを作成していますどのようにでしょうか?
、私はあなたがこのコンパクトな形で認証Cookieを作成しようとすることを示唆している: 'FormsAuthentication.SetAuthCookie(ユーザー名、持続);' それはストレートフォワードはるかだし、それはあなたの問題を解決する可能性があります、たとえそうでなくても、はるかにクリーンでコンパクトです。 –
@OferZeligあなたが提案したように、クッキーにcustomerIDの値を追加することは可能ですか? – aleafonso
私はそれについては分かりませんが、私は他のことをやっています:現在の 'MembershipUser'を取得し、自分のデータベースから、またはメンバーシップユーザーの' Comment'プロパティからIDを取得します。 –