超詳細asp.Netは完全なログイン機能を実現する


この2,3日ずっとaspを使っています.Netは1つのログイン機能を実現して、収穫はとても多くて、私の得を分かち合います:
まず、本人用の開発ツールはMicrosoft Visual Studio 2010バージョン、データベース用はSql Server 2005です.
sql文でユーザー・テーブルuserInfoを作成するには、次の手順に従います.
create table userInfo(
    userId int not null primary key identity(1,1),
    userName varchar(255),
    password varchar(255),
    remark varchar(255));

not nullは非空を表し、primary keyはプライマリ・キーを表し、identityは自己増加を表す.
sql文でユーザーadmin 5を追加します.
insert into userInfo(userName,password)values('admin5','admin5');//    

loginを作成します.aspxページ:






    loginDemo

    


    

login.aspx.csページでログイン機能を実現するには:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using IceLine.Iar.Tools;

public partial class study_login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //login();
        //queryUserInfo();
    }
    public void login()
    {
        string str = "server=    ;database=    ;uid=   ;pwd=  ;Trusted_Connection=no";
        SqlConnection conn = new SqlConnection(str);
        conn.Open();
        string sql = "select * from userInfo where userName=@userName and password=@password";
        SqlCommand comm = new SqlCommand(sql, conn);
        comm.Parameters.Add("userName", TextBox1.Text);
        comm.Parameters.Add("password", TextBox2.Text);
        SqlDataReader sdr = comm.ExecuteReader();
        if (sdr.Read())
        {
            Session["userName"] = TextBox1.Text;
            Session["password"] = TextBox2.Text;
            //lblMessage.Text = "    !";
            Response.Write("alert('  " + Session["userName"] + ",     !');location.href='../secure/report/test2.aspx';");
            //Response.Write("alert('       ');location.href='../secure/report/test2.aspx';");
        }
        else
        {
            lblMessage.Text = "    ,        !";
            //Response.Redirect("login.aspx");
        }
        
        //Server.Transfer("../secure/report/test2.aspx");
        //Response.Write("alert('       ');location.href='../secure/report/test2.aspx';");
        //Response.Write("../secure/report/test.aspx");
        //Response.Redirect("../secure/report/test.aspx");
        conn.Close();  

        
        

    }
    public void queryUserInfo() {
        clsDbAccept cds = new clsDbAccept();
        Session["userName"] = TextBox1.Text;
        Session["password"] = TextBox2.Text;
        string sql = "select * from userInfo where userName='" + Session["userName"] + " 'and password='" + Session["password"]+"'";
        SqlDataReader sdr = null;
        IarDBManager db = new IarDBManager();
        sdr = db.Query(sql);
        if (sdr.Read())
        {
            Session["userName"] = TextBox1.Text;
            Session["password"] = TextBox2.Text;
            //lblMessage.Text = "    !";
            Response.Write("alert('  " + Session["userName"] + ",     !');location.href='../secure/report/test2.aspx';");
            //Response.Write("alert('       ');location.href='../secure/report/test2.aspx';");
        }
        else
        {
            lblMessage.Text = "    ,        !";
            //Response.Redirect("login.aspx");
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //queryUserInfo();
        login();
    }
}
Trusted_Connection=no
はデータベースのユーザー名とパスワードでログインし、yesの場合はwindowsでログインします.上のコードのlogin()メソッドとqueryUserInfo()メソッドは、ユーザー登録機能を実現していますが、データベース接続方式が異なるだけで、後者は既存のパッケージコードを使用しています.無視できます.
注意:ログインを実現するには、ログインボタンをクリックしてイベントをトリガーし、ページをリフレッシュしてロードするわけではありません.他のページでユーザー名を表示したい場合は、Session[userName]を直接使用します.