1

プロファイルでWindows認証を使用していて、カスタム認証に切り替えたいと思っています。
私の質問は、ユーザーが認証されていることをどのように指定でき、Profile.UserNameを設定する方法です。
Profile.UserNameがReadOnlyであることを知っています。

Web.Configで、を変更し、 authentication mode="None"匿名を有効にするようにIISを構成します。
global.asaxで、ユーザーのCookieが存在するかどうかを確認します。存在しない場合、ユーザーはログインページにリダイレクトされます。彼が送信するとき、私はCookieを作成し、この時点でプロファイル情報を設定します。

誰かがそれについてのリンクを私に与えることができれば、私は本当に感謝します。

4

1 に答える 1

1

FormsAuthenticationが必要なものを処理できるようです。ルートweb.configに次の行を追加します

<authentication mode="Forms">
  <forms name="XXXXX.ASPXAUTH" timeout="60" loginUrl="~/login.aspx" protection="All" path="/"></forms>
</authentication>

XXXをCookieと呼びたいものに置き換えます。また、login.aspxの名前をログインページの名前に変更します。このコードは、認証されていない人をログインページにリダイレクトします。

次に、ログインロジックで次のC#コードのようなものを使用します

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, txtUsername.Text,
     DateTime.Now, DateTime.Now.AddMinutes(60), true, reader["user_level"] + "",
     FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);

このコードを使用すると、ログインしているユーザー(つまり、管理者、ユーザーなど)のユーザーレベルで「リーダー[...」を送信する必要があります。

最後に行う必要があるのは、許可されるユーザーロールと拒否されるロールの概要を示す独自のweb.configを使用して各保護ディレクトリを設定することです。web.configのロールに使用する名前は、FormsAuthenticationTicketに送信される値と一致している必要があり、これで問題ありません。

于 2010-09-29T16:02:10.263 に答える