我知道我以前做过这个并且我有很多想法,但是到目前为止我做的工作已经失败了我的代码看起来像这样:(顺便说一句,我使用Identity)。 / p>
var manager = new UserManager();
ApplicationUser user = manager.Find(UserName.Text, Password.Text);
if (user != null)
{
IdentityHelper.SignIn(manager, user, RememberMe.Checked);
IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
}
else
{
FailureText.Text = "Invalid username or password.";
ErrorMessage.Visible = true;
}
我曾经考虑过使用这样的东西我会怎么做呢?
var userId = GetUserId();
// After they log In
Response.Redirect("~/" + userId + ".aspx");
目前它将我重新引导回主页。提前谢谢。
public static void RedirectToReturnUrl(string returnUrl, HttpResponse response)
{
UserManager manager = new UserManager();
var user = manager.FindById(User.Identity.GetUserId());
if (!String.IsNullOrEmpty(returnUrl) && IsLocalUrl(returnUrl))
{
response.Redirect(returnUrl);
}
else
{
response.Redirect("~/residentpages/" + user + ".aspx");
}
}
到目前为止唯一的问题是User.Identity.GetUserId
部分,视觉基础是"用户"在当前上下文中不存在标识前面。
答案 0 :(得分:0)
据我所知,你有点困惑或者我不理解你。
如果您有一个控制器说ProfileController
,那么您将在该控制器上执行一个名为Details
的操作。
在此操作中,您点击数据库并获取该用户的特定配置文件。要在此处导航,请执行以下操作:
public ActionResult Login()
{
// however you set the log in status
return RedirectToAction("Details", "ProfileController", new { id = userId });
}
然后,这将调用我们之前讨论的行动:
public ActionResult Details(string id)
{
using (var context = contextFactory.Create())
{
var profile = context.UserProfiles.FirstOrDefault(x => x.Id == id);
return View(profile);
}
}
我使用工厂构建了我的上下文,因此我为什么这样做,因此可以进行测试等等。但是,只要处理它的处理,就可以使用纯上下文。