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