2012-10-10 23 views
0

我的用戶表(我創建的)具有以下欄目:SimpleMembership更新「isconfirmed」標誌

UserId,UserName,FirstName,LastName,DOB 

後,我跑了這個命令

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true); 

它創建了所需的簡單會員我的桌子。

我怎麼會去「UnConfirming」的用戶或設置使用新的API SimpleMembership「IsConfirmed」標誌在webpages_Membership假的?

(此前,臨睡前使用「會員」級我可以使用API​​調用更新用戶simplemembership:Membership.UpdateUser(用戶);)

回答

1

我不能因爲直接回答你的問題我無法找出一種「不確認」帳戶的方法。然而,我最終做的事可能會幫助找到這個問題的人。

我基本上是用Roles把關。每當我創建一個新帳戶,我認爲用戶添加到「用戶」的角色:

Roles.AddUserToRole(newUser.Username, "User"); 

我使用授權屬性來限制我的控制器(和我想成爲公共行動使用[使用AllowAnonymous] - - 比如RegisterUser)。然後,在每個操作中,我添加一種方法來限制只有「用戶」角色的用戶才能訪問。

if (!Roles.IsUserInRole(role)) 
{ 
    throw new HttpResponseException(
     new HttpResponseMessage(HttpStatusCode.Unauthorized)); 
} 

注:我使用的Web API,但如果你使用MVC,你應該有一個更容易的時間。不用手動檢查,如果用戶是在每個動作,你可以只使用授權屬性的作用:

[Authorize(Roles = "User")] 

當我想爲「未確認」用戶我剛剛從「用戶」的角色刪除。

Roles.RemoveUserFromRole(user.Username, "User"); 

這樣,如果用戶自帶爬回來我就可以將其添加回爲一個用戶激活他們的帳戶。

0

我最終什麼事做了直接更新該表通過SQL查詢。不確定這是否是推薦的方式,但這似乎對我有用。 (謝謝你的建議太)。

-1

集requireConfirmationToken是真實的:(如下圖所示的第4個值)

WebSecurity.CreateUserAndAccount(viewModel.UserName, viewModel.Password, null, true); 

來源 http://www.w3schools.com/aspnet/met_websecurity_createuserandaccount.asp

+0

首先,[W3Schools的應該很少作參考材料(http://www.w3fools.com/),但更多的imporantly,這不回答這個問題'我怎麼會去「UnConfirming」的用戶或將「IsConfirmed」標誌設置爲false –

1

看看這個blog post on adding email confirmation to SimpleMembership registration process,它涵蓋了確認過程是如何工作的。懸崖筆記是當你創建一個新用戶時,你設置了你想要使用確認的標誌。

string confirmationToken = 
    WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email }, true); 

當你這樣做CreateUserAndAccount方法返回一個獨特的標記,你可以把一封帶有鏈接,使用戶可以確認他們給你一個有效的電子郵件地址。當他們點擊鏈接,它通過在URL中的令牌,然後控制器動作可以確認這樣的令牌。

[AllowAnonymous] 
public ActionResult RegisterConfirmation(string Id) 
{ 
    if (WebSecurity.ConfirmAccount(Id)) 
    { 
     return RedirectToAction("ConfirmationSuccess"); 
    } 
    return RedirectToAction("ConfirmationFailure"); 
} 

的ConfirmAccount方法檢查是否有一個uncomfirmed令牌數據庫中的匹配,並且如果有它設置isConfirmed標誌爲真。用戶將無法登錄,直到它設置爲true。