Mon code interroge un serveur qui, si l'utilisateur et le mot de passe sont corrects, renvoie le caractère "+". Sinon, ce n'est pas le cas. Mauvaise pratique, mais j'utilise juste cette idée pour apprendre C# et ASP.NET dont je suis un débutant (j'ai déjà écrit le programme dans JSP).L'authentification de connexion retourne toujours vrai
Mon problème:
- , il me semble actuellement avoir une erreur qui provoque mes méthodes pour revenir toujours vrai. Cela ne devrait pas être le cas. Cela ne devrait être que vrai lorsque les nom d'utilisateur/passe sont authentifiés.
- Je veux qu'il affiche le formulaire de connexion seulement si l'utilisateur n'est pas connecté et qu'une session n'a pas été commencée - quelle est la meilleure façon d'adapter mon code pour faire ceci?
Mon code à ce jour:
@{
// Initialize general page variables
string username = "";
string password = "";
bool rememberMe = false;
// Validation
bool isValid = true;
// If this is a POST request, validate and process data
if (IsPost) {
username = Request.Form["username"];
password = Request.Form["password"];
rememberMe = Request.Form["remember"].AsBool();
// Attempt to login to the external authentication server
if(isValid){
using (TcpClient client = new TcpClient("hosty.host.com", 110)) {
using (NetworkStream stream = client.GetStream()) {
using (StreamReader reader = new StreamReader(stream)) {
using (StreamWriter writer = new StreamWriter(stream)) {
writer.WriteLine("USER " + username);
writer.WriteLine("PASS " + password);
string response = reader.ReadLine();
isValid = response[ 0 ] == '+';
Response.Write(response);
writer.WriteLine("quit\n");
}
}
}
}
}
if (isValid) {
<text>IT WORKED---></text>
//USER LOGGED IN/ SESSION STARTED
} else {
<text>IT DIDNT WORK :(</text>
//USER NOT LOGGED IN, SESSION NOT STARTED
}
}
}
<h2>Login Here</h2>
<form action="" method="post">
<fieldset>
<legend>Login Form</legend>
<label for="username">Username:
<input type="text" name="username" id="username" value="" />
</label>
<label for="password">Password:
<input type="password" name="password" id="password" value="" />
</label>
<label for="remember">
<input class="checkbox" type="checkbox" name="remember" id="remember" checked="checked" />
Remember me</label>
<p>
<input type="submit" name="login" id="login" value="Login" />
<input type="reset" name="reset" id="reset" value="Reset" />
</p>
</fieldset>
</form>
</div>
</fieldset>
</form>
S'il vous plaît éviter d'inclure des choses comme 'C#/Razor/ASP.NET' dans le titre de votre question. C'est ce que les tags sont pour. –
Désolé pour ça! :) –
Vous pouvez empiler les instructions Using (instructions imbriquées) de sorte qu'il n'y a pas besoin d'autant de jeux de parenthèses. – Lloyd