登录用户主页后重定向用户

时间:2014-09-24 20:24:13

标签: c# asp.net

我知道我以前做过这个并且我有很多想法,但是到目前为止我做的工作已经失败了我的代码看起来像这样:(顺便说一句,我使用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部分,视觉基础是"用户"在当前上下文中不存在标识前面。

1 个答案:

答案 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);         
     }   
}

我使用工厂构建了我的上下文,因此我为什么这样做,因此可以进行测试等等。但是,只要处理它的处理,就可以使用纯上下文。

相关问题