MVCにおけるメンバーシップクラスとデータベースに関する質問

7724 ワード

Membership     ASPNETDB     ,                ,                  ASPNETDB     ,  ASP.NET      SqlMembershipProvider      。
, ASP.NET SqlMembershipProvider, ASPNETDB 。 , 。
, ( ASPNETDB ), MembershipProvider。 。
1, , TestDB01。 TestDB01 UserInfo, UserID,UserName,UserAge。
2, MembershipProvider, System.Web.Security MembershipProvider 。 , , MyMembershipProvider, , Infrastructure( ) 。

namespace MvcApplication5.Infrastructure
{
public class MyMembershipProvider : System.Web.Security.MembershipProvider/* */
{
}

, , 。。
“System.Web.Security.MembershipProvider” , “ ”( , , “Emplement Abstract Class”), MyMembershipProvider N , ( ):
public class MyMembershipProvider : System.Web.Security.MembershipProvider
{
public override string ApplicationName
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}

public override bool ChangePassword(string username, string oldPassword, string newPassword)
{
throw new NotImplementedException();
}

//...

public override bool ValidateUser(string username, string password)
{
throw new NotImplementedException();
}
}
, , NotImplementedException 。 , , , “ ” 。。
, , ValidateUser() 。 , , :
public override bool ValidateUser(string username, string password)
{
SqlConnection sqlconn = new SqlConnection("Data Source=HCNG-PC;Initial Catalog=TestDB01;Integrated Security=True");/* HCNG-PC, TestDB01 */
SqlCommand sqlcmd = new SqlCommand("select UserID, UserName from [UserInfo] where UserName = @userName and UserAge = @userAge", sqlconn);/* , , */

try
{
sqlconn.Open();

sqlcmd.Parameters.Add(new SqlParameter("@userName", SqlDbType.NVarChar, 50));
sqlcmd.Parameters["@userName"].Value = username.Trim();
sqlcmd.Parameters.Add(new SqlParameter("@userAge", SqlDbType.SmallInt, 2));
sqlcmd.Parameters["@userAge"].Value = password;

SqlDataReader sqlRd = sqlcmd.ExecuteReader();
if (sqlRd.HasRows)
{
return true;
}

return false;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
, MembershipProvider 。
3, web.config。 <system.web> <membership> :
<system.web>
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider" <!-- 。。-->type="MvcApplication5.Infrastructure.MyMembershipProvider"/><!-- 。。-->
</providers>
</membership>
4, , 。
Default1Controller, Default1Controller action:
[HttpPost]
public ActionResult Index(string username, string password)
{
if (Membership.ValidateUser(username, password))
{
ViewData["message"] = "OK";
}
else
{
ViewData["message"] = "NO";
}

return View();
}
, Membership.ValidateUser() 。

, MembershipProvider , 。。
MVC , MVC MembershipProvider 。。

MembershipProvider , , System.Web.Security.MembershipProvider ChangePassword(), , 。。
ChangePasswordQuestionAndAnswer() , CreateUser() 。。

MembershipProvider, RoleProvider, RoleProvider :
public class MyRoleProvider : RoleProvider
{
public override string[] GetRolesForUser(string username)
{
if (username == "Steve")
return new string[] { "ApprovedMember", "CommentsModerator" };
else
return new string[] { };
}
/* */
}
, RoleProvider, web.config , , 。。

ProfileProvider, , 。。

---------------------------------Membership ----------------------------------------------------------------------
“aspnet_regsql” , 11 , API 11 。
11 , , 。 : , , Id
netframwork ASP.NET SQL Server (Aspnet_regsql.exe)
:[drive:]\WINDOWS\Microsoft.NET\Framework\versionNumber

ASP.NET SQL Server登録ツールはASPを作成するために使用されます.NETのSQL Serverプロバイダで使用されるMicrosoft SQL Serverデータベース、または既存のデータベースでオプションを追加または削除するために使用されます.コマンドラインパラメータなしでAspnet_を実行できます.regsql.Exceでは、SQL Serverのインストールに接続情報を指定し、メンバーシップ、ロールマネージャ、プロファイル、Web部品のカスタマイズ設定、および実行状況監視などの機能のデータベース要素をインストールまたは削除するウィザードを実行します.(このウィザードでは、セッションステータスの設定やSQLキャッシュの依存関係はありません.)次の表に示すオプションを使用して、Aspnet_をregsql.exeはコマンドラインツールとして実行され、各機能に追加または削除するデータベース要素を指定します.
  

Aspnet_regsql.exe

-W Wizard , 。 
-C ,- SQL Server ,  
-S , -  
-U ,- , 。 
-P ,- 。 -U -P  
-E , , Windows 。 
-d , , 'aspnetdb"  
-sqlexportonly , , , 。 
-A all|m|r|p|c|w ,-A ,m membership ,r Role ,p Profile ,c Web Parts ,w Web ,all /  
-R all|m|r|p|c|w -R ,m membership ,r Role ,p Profile ,c Web Parts ,w Web ,all /  
: aspnet_regsql.exe –A p –E
--Session State  
-ssadd , / SQL Server Session State  
-ssremove , / SQL Server Session State  
-sstype t|p|c , ,t Session State SQL Server 'tempdb" , “ASPState” , , Session State , 。p ,Session State SQL Server 'ASPState" ;c ,Session State -d SQL Server  
:aspnet_regsql -S localhost -U sa -P wrox -ssadd -sstype p
--SQL Cache Dependency  
-ed , , / SQL Cache Dependency  
-dd, , / SQL Cache Dependency  
-et, , -t , / SQL Cache Dependency  
-dt, , -t , / SQL Cache Dependency  
-t , , -et -dt  
-lt , , , QL Cache Dependency
: aspnet_regsql.exe -S localhost -U sa -P password -d Northwind -t Products –et