我正在研究基于Parse.com框架的ASP.NET MVC5应用程序。从任务中检索T <T>
既然不能使用解析登录方法,我不得不使用张贴在这里的方法来解决它的局限性:Parse.com multiple users issue
这里是我的登录方法(只是微小的变化):
public async Task<ActionResult> Login(AccountModel model) //no returnUrl string
{
ParseUser user;
try
{
user = await ParseUser.LogInAsync(model.UserName, model.Password);//login parse user
}
catch (Exception e)
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
//making setAuthCookie get parse object id instead of username
FormsAuthentication.SetAuthCookie(user.ObjectId, model.RememberMe);
ParseUser.LogOut(); //log out parse user
return RedirectToAction("index", "home"); //Redirect to Action
}
所以基本上我(解析)登录用户,将AuthCookie设置为它的对象ID,然后(解析)注销用户。这样我可以有多个用户登录.Out SetAuthCookie我现在可以获得用户ID。
但是,我想显示一些额外的用户数据(如用户地址,类型,名称,姓氏)在parse.com云。所以我想我会写一个方法,通过使用当前通过身份验证的用户ID来获取这些数据,用数据填充我的AccountModel类对象,然后将其传递给视图。这是它会怎么看起来像一个松散的想法(我知道语法可能是错误的,我没有访问我的Visual Studio现在):
的UserData模式:
public async Task<AccountModel> GetUserData()
{
AccountModel userData = new AccountModel();
ParseObject user;
ParseQuery<ParseObject> query = ParseObject.GetQuery("_User");
try
{
//i can't remember how to get authenticated user identity
user = await query.GetAsync(AuthenticatedUser.Identity());
}
catch(Exception e)
{
//code to handle exception
}
userData.Name = user.Get<string>("Name");
userData.Lastname = user.Get<string>("Lastname");
userData.Adress = user.Get<string>("Adress");
return userData; //it will probably throw an error
}
控制器:
public ActionResult Index()
{
UserData model = new UserData();
return View(model.GetUserData());
}
所以现在它可能会引发错误(不能从任务< T>返回T),我不知道如何解决这一问题,这样我就可以在用户数据得到当前登录。
我在我的网站上有用户名和姓氏显示的导航栏,所以我必须在每次显示页面时以某种方式获取当前登录的用户数据。是否有任何解决方法/更简单的方法来实现这一目标?