我已经创建了WCF项目与MVC。我已经实现了默认MVC模板的SimpleMembership数据库,以便我能够成功实现注册和登录用户。但是,通过使用相同的WebSecurity.Login(用户名,密码)方法,我无法查询相同的数据库表,即UserProfiels(UserId,UserName),webpages_Membership(UserId,Password,PasswordSalt,....)。在MVC项目我不知道为什么WebSecurity.Login(用户名,密码)返回false,而WebSecurity.Exists(用户名)确实返回true
注册方法为
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
WebSecurity.Login(用户名,密码)的WCF项目方法如下
public string LoginService(string UserName, string Password)
{
try
{
string answer = null;
if (WebSecurity.UserExists(UserName)) // returns true
{
if(WebSecurity.Login(UserName,Password)) // always return false
{
string role = Roles.GetRolesForUser(UserName).FirstOrDefault();
answer = role;
}
}
return answer;
}
catch (Exception)
{
return null;
}
}
我不知道为什么WebSecurity.Login(用户名,密码)永远不会填充用户名和相应密码存在的UserProfile和webpages_Membership表。
我没有更新任何web.config文件,因为它有db连接和WCF Rest绑定的默认设置,它完美地工作。
我在这里看了一下https://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.login(v=vs.111).aspx并在google上搜索,但找不到满意的解决方案。
高度赞赏任何代码片段或建议。
谢谢