Asp.Net フォーラムは、以降、ANF バージョン 2.0 と呼ばれます。この記事は、今日の作業を記録するだけであり、技術的な内容はありません。
既存のシステムにはすでに独自のユーザー システムがあり、ANF に接続する必要があります。既存のシステム ユーザーが登録、ログイン、パスワードを変更する場合は、それに応じて ANF に反映する必要があります。 ANF ユーザーの変更は既存のシステムに影響を与える必要はなく、一方向の同期のみが必要です。
既存のコードにできるだけ触れずに統合を完了する簡単な方法を見つけてください。以前、Baoyu の CnForums と既存システムとの統合計画を検討しましたが、最終的には、既存システムの上記のアクションの後にユーザー関連の情報と操作タイプを URL に追加し、それを新しいページに渡して処理することにしました。 ANF での関連操作。
この新しいページは、当面は Bridge.aspx と呼ばれます。もちろん、このページは ANF プロジェクト内に構築され、ユーザー名、パスワード、その他の情報を受け取り、対応する ANF を実行する必要があります。操作。
登録は
非常に簡単です。ユーザー名とパスワードはリクエストから情報を取得します。次に、AccountStatus を Pass に設定し、IsAnonymous を設定するだけです。消す。 Users.Create の bool パラメータは、登録の成功を示す電子メールをユーザーに送信するかどうかを表します。もちろん、電子メールがない場合はオフにしました。
エラーを返さずにどこでもエラーを検出していることに注意してください。これを行う必要はありません。
public void Register()
{
試す
{
ユーザー user = new User();
user.ユーザー名 = ユーザー名;
user.Password = パスワード;
user.Email = " [email protected] ";
user.AccountStatus = UserAccountStatus.Approved;
user.IsAnonymous = false;
Users.Create(user, false);
}
キャッチ
{
}
ログインは
基本
的にコピーして貼り付けます。同期ログインのキーとなる最後の setcookie に注意してください。
public void Login()
{
試す
{
ユーザー userToLogin = new User();
userToLogin.Username = ユーザー名;
userToLogin.Password = ログイン
ユーザーステータスloginStatus = Users.ValidUser(userToLogin)
if (loginStatus == LoginUserStatus.Success)
{
if (!Globals.GetSiteSettings().AllowLogin)
{
bool allowed = false;
int userid = Users.FindUserByUsername(userToLogin.Username).UserID;
ArrayList ロール = Roles.GetRoles(userid)
foreach (ロール内のロールロール)
{
if (role.Name == "サイト管理者" || role.Name == "グローバル管理者")
{
許可 = true;
壊す;
}
}
もし(!許される)
{
戻る;
}
}
set_Cookie(userToLogin.ユーザー名, "1");
}
}
キャッチ
{
}
パスワードを変更するという
前提は、
すでに行われているログインに基づいています。これと異なる場合は、独自の判断を追加する必要があります。
public void ChangePassword()
{
試す
{
フォーラムコンテキスト forumContext = フォーラムコンテキスト.Current;
ユーザー user = forumContext.User;
if (ユーザー != null)
{
user.ChangePassword(パスワード, 新しいパスワード);
}
}
キャッチ
{
}
クッキー
を設定します
public void set_Cookie(string ユーザー名, string Selet_item)
{
if(Selet_item == "0")
{
FormsAuthentication.SetAuthCookie(ユーザー名,false);
}
それ以外
{
フォーラムコンテキスト forumContext = フォーラムコンテキスト.Current;
FormsAuthentication.SetAuthCookie(ユーザー名,true);
forumContext.Context.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime。
_Now.AddDays(System.Convert.ToInt32(Selet_item));
}
最後
に、登録、ログイン、および既存のシステムの変更を行った後、Response.Redirect ページは問題ありません。Redirect が気に入らない場合は、必要な表示に応じて、Server.Transfer または xmlhttp を使用します。もう 1 つの重要な点は、送信する文字列は暗号化する必要があり、そうでないと書き込むことができません... ※¥※×%※×、それでも安全でない場合は、IP を使用してこのページにアクセスできる人を特定してください。