Asp.Net Forums est ci-après appelé ANF, version 2.0. Cet article est un compte rendu des coefficients. Il enregistre simplement le travail d'aujourd'hui et n'a aucun contenu technique.
Le système existant dispose déjà de son propre ensemble de systèmes utilisateur, qui doivent être connectés à l'ANF. Il est nécessaire que lorsque les utilisateurs du système existants s'inscrivent, se connectent et modifient leurs mots de passe, ils soient reflétés en conséquence dans l'ANF. Les modifications des utilisateurs ANF ne sont pas nécessaires pour affecter les systèmes existants, mais uniquement une synchronisation unidirectionnelle.
Trouvez un moyen simple de terminer l’intégration tout en touchant le moins de code existant possible. J'ai déjà examiné le plan d'intégration CnForums de Baoyu avec le système existant, et j'ai finalement décidé d'être paresseux et d'ajouter les informations relatives à l'utilisateur et le type d'opération à l'URL après les actions ci-dessus du système existant et de les transmettre à une nouvelle page pour traiter le opérations connexes au sein de l’ANF.
Cette nouvelle page s'appelle pour le moment bridge.aspx. Bien entendu, elle doit être construite dans un projet ANF et tous les éléments d'utilisation doivent être utilisés. Elle est responsable de la réception du nom d'utilisateur, du mot de passe et d'autres informations, puis de l'exécution de l'ANF correspondante. opérations.
L'inscription
est très simple. Mon nom d'utilisateur et mon mot de passe sont des attributs prédéfinis. Je reçois des informations de Request. Si nous n'avons pas d'e-mail dans notre système, nous devons simplement en ajouter un. Ensuite, nous devons définir AccountStatus sur Pass et IsAnonymous. éteindre. Le paramètre bool dans Users.Create indique s'il faut envoyer un e-mail indiquant une inscription réussie à l'utilisateur. Bien sûr, je l'ai désactivé s'il n'y avait pas d'e-mail.
Notez que j'attrape des erreurs partout sans les renvoyer. Vous n'êtes pas obligé de le faire.
Registre vide public()
{
essayer
{
Utilisateur utilisateur = nouvel utilisateur ();
user.Username = Nom d'utilisateur ;
user.Password = Mot de passe ;
utilisateur.Email = " [email protected] ";
user.AccountStatus = UserAccountStatus.Approved ;
user.IsAnonymous = false;
Utilisateurs.Create(utilisateur, false);
}
attraper
{
}
}
La connexion
est essentiellement copiée et collée. Faites attention au setcookie à la fin, qui est la clé de la connexion synchrone.
Connexion publique vide ()
{
essayer
{
Utilisateur userToLogin = new User();
userToLogin.Username = Nom d'utilisateur ;
userToLogin.Password = Mot de passe ;
LoginUserStatus loginStatus = Users.ValidUser(userToLogin);
if (loginStatus == LoginUserStatus.Success)
{
si (!Globals.GetSiteSettings().AllowLogin)
{
bool autorisé = faux ;
int userid = Users.FindUserByUsername(userToLogin.Username).UserID ;
ArrayList rôles = Roles.GetRoles(userid);
foreach (rôle dans les rôles)
{
if (role.Name == "Administrateurs du site" || role.Name == "Administrateurs globaux")
{
autorisé = vrai ;
casser;
}
}
si (!autorisé)
{
retour;
}
}
set_Cookie(userToLogin.Username, "1");
}
}
attraper
{
}
}
du changement du mot de passe
est basée sur la connexion déjà effectuée. Si votre hypothèse n'est pas la suivante, vous devez ajouter votre propre jugement.
public void ChangePassword()
{
essayer
{
ForumContext forumContext = ForumContext.Current;
Utilisateur utilisateur = forumContext.User ;
si (utilisateur != null)
{
user.ChangePassword (Mot de passe, NewPassword);
}
}
attraper
{
}
}
Définir le cookie
public void set_Cookie (string Nom d'utilisateur, string Selet_item)
{
si(Selet_item == "0")
{
FormsAuthentication.SetAuthCookie(Nom d'utilisateur,false);
}
autre
{
ForumContext forumContext = ForumContext.Current;
FormsAuthentication.SetAuthCookie(Nom d'utilisateur,true);
forumContext.Context.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.
_Now.AddDays(System.Convert.ToInt32(Selet_item));
}
}
Enfin, après vous être enregistré, connecté et modifié le système existant, la page Response.Redirect sera correcte. Si vous n'aimez pas Redirect, Server.Transfer ou xmlhttp fera l'affaire. Un autre point important est que la chaîne que vous transmettez doit être cryptée, sinon elle ne peut pas être écrite... ※¥※×%※×, si elle n'est toujours pas sûre, utilisez l'IP pour déterminer qui peut accéder à cette page !