假設有這麼一個場景
解決方案
討論
微軟的MVC團隊已經對賬戶controller做了很多的改進
在MVC
①Empty
②Internet Application
③Intranet Application
對於大多數網站
這將生成AccountController
為了組織用戶訪問特定的view
// GET: /Account/ChangePassword
[Authorize]
public ActionResult ChangePassword()
{
return View(); }
它的意圖是只有登陸用戶才可以訪問密碼修改頁面
當一個用戶訪問頁面/Account/ChangePassword
<authentication mode=
<forms loginUrl=
</authentication>
如果用戶從來都沒有注冊過
AccountController中的Register action 接收一個RegisterModel 類型的參數
注冊action
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership
model
true
if (createStatus ==
MembershipCreateStatus
{
FormsAuthentication
model
false /* createPersistentCookie */);
return RedirectToAction(
}
else
{
ModelState
ErrorCodeToString(createStatus));
}
}
// If we got this far
// redisplay form
return View(model);
上邊的代碼是自動生成的
①通過Membership
②如果創建成功
③如果創建成功
如果你已經安裝了完整版本的visual studio和SQL Express
方法是
默認的數據庫連接字符串在webconfig裡
<connectionStrings>
<add name=
User Instance=true
</connectionStrings>
將來用戶再次訪問網站的時候
如果cookie沒有被保存
[HttpPost]
public ActionResult LogOn(LogOnModel model
string returnUrl)
{
if (ModelState
{
if (Membership
model
{
FormsAuthentication
model
if (Url
&& returnUrl
&& returnUrl
&& !returnUrl
&& !returnUrl
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction(
}
}
else
{
ModelState
is incorrect
}
}
// If we got this far
// redisplay form
return View(model);
}
上邊的代碼頁是自動生成的
①通過 Membership
②如果登陸成功
③如果通過驗證
AuthorizeAttribute 特性可以進一步限定特定的用戶組或者特定的用戶才可以訪問指定的action
例如
// Retrieve a list of all users to allow an admin
// to manage them
[Authorize(Roles =
public ActionResult UserAdmin()
{
MembershipUserCollection users =
Membership
return View(users);
}
// Create some custom reports for me only
[Authorize(Users =
public ActionResult JamieAdmin()
{
// Perform some logic to generate usage reports
return View();
}
From:http://tw.wingwit.com/Article/program/net/201311/11792.html