簡體   English   中英

我想知道為什么WebSecurity.Login(username,password)返回false而WebSecurity.Exists(username)確實返回true

[英]I wonder why WebSecurity.Login(username,password) returns false while WebSecurity.Exists(username) does return true

我已經與MVC一起創建了WCF項目。 我已經實現了默認MVC模板的SimpleMembership數據庫,以便注冊並登錄能夠成功實現的用戶。 但是,我無法使用相同的WebSecurity.Login(UserName,Password)方法來查詢相同的數據庫表,即UserProfiels(UserId,UserName),webpages_Membership(UserId,Password,PasswordSalt等)。

MVC項目中的注冊方法如下

// 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));
            }

WCF項目中的WebSecurity.Login(username,password)方法如下

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(UserName,Password)永遠不會填充其中存在用戶名和相應密碼的UserProfile和webpages_Membership表。

我還沒有更新任何web.config文件,因為它具有數據庫連接和WCF Rest綁定的默認設置,可以很好地工作。

我在這里https://msdn.microsoft.com/zh-cn/library/webmatrix.webdata.websecurity.login(v=vs.111).aspx上進行了搜索,並在Google上進行了搜索,但找不到滿意的解決方案。

高度贊賞任何代碼段或建議。

謝謝

我假設您將MVC和WCF應用程序作為單獨的站點運行,並且看到用戶出現在數據庫中。

默認情況下,如果您不進行其他任何更改,則ASP.NET將為每個站點生成一個不同的應用程序名稱(請參見此處的備注 ),並且用戶將按應用程序進行分區-這可能就是為什么您無法使用以下方式登錄的原因WCF網站上的用戶。

UserExists文檔指出:

該方法驗證用戶是否存在於用戶配置文件表中。 但是,它不會驗證該用戶的會員帳戶是否存在

似乎沒有以相同的方式對配置文件進行分區。

如果您在成員資格配置中設置ApplicationName,則可以使用相同的數據庫並在兩個應用程序上登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM