私のコードは、ユーザとパスワードが正しい場合に "+"文字を返すサーバに問い合わせています。さもなければそれはしません。悪い習慣ですが、私は初心者であるC#とASP.NETを学ぶためにこのアイデアを使用しています(以前はJSPでプログラムを書いていました)。ログイン認証は常にtrueを返します
私の問題:
- 現在、私は常にtrueを返し に私の方法を引き起こし、いくつかのエラーを持っているように思われます。これは当てはまりません。ユーザー名/パスが認証された場合は、 になります。
- ユーザがログインしていない場合にのみログインフォームを表示したい場合は、 セッションが開始されていません。このために私の コードを適合させる最良の方法は何ですか?
これまでの私のコード:
@{
// 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>
質問タイトルに 'C#/ Razor/ASP.NET'のようなものは含めないようにしてください。それがタグのためのものです。 –
申し訳ありません! :) –
usingステートメント(ネストされたステートメント)をスタックすることができますので、中括弧のセットをあまり必要としません。 – Lloyd