1

首先使用带有 KendoUI 和 Simplemembership EF 代码的 VS'12 asp.net MVC4 C# InternetApplication。

这就是 VS 为您提供的开始。

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                WebSecurity.Login(model.UserName, model.Password);
                return RedirectToAction("Index", "Home");
. 
.
.

这是我希望它到RedirectToAction我的控制器ChangeUsersInfo控制器的地方,并将新创建的用户的 id 发送给它。

要获得我尝试过的 ID

1.

               var UserID = (from u in db.UserProfiles
                            where u.UserName == User.Identity.Name
                            select new
                            {
                               UserID = u.UserID
                            }).Single();

2.

  var userID = System.Web.Security.Membership.GetUser().ProviderUserKey;
  1. return RedirectToAction("Edit","ChangeUsersInfo", userID);

  2. 我也试过return RedirectToAction("Edit","ChangeUsersInfo");看看它是否会让我在没有变量的情况下将它发送到那里。

由于某些原因

  1. 返回的变量 = Null
  2. 返回的变量 = Null
  3. 不起作用,因为 1 和 2 没有
  4. 似乎没有重定向到新的,EDIT而是重定向到LOG IN屏幕

我的空值和失败重定向背后的原因是什么?

是的,数据库有用户

4

1 回答 1

1
var userID = System.Web.Security.Membership.GetUser().ProviderUserKey;

使用 WebSecurity 和 System.Web.Security 项仅适用于后续请求,因为您尚未将身份验证 cookie 发送回客户端(这是它从中提取数据的地方)。鉴于此,您甚至不必在重定向 URL 中发送用户的用户 ID……他们已登录,您只需在您要执行的控制器/操作中获取它。通过从 auth 票证中获取 userId,您现在不必检查 URL 中传递的用户 Id 是否实际上是当前登录的用户。

例子:

登录方式

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Register(RegisterModel model)
    {
        if (!ModelState.IsValid)
        {
             //send em back with the errors
             Return View();
        }
        try
        {
            WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
            WebSecurity.Login(model.UserName, model.Password);
            return RedirectToAction("Index", "ChangeUsersInfo");
        }...
    }

更改用户信息控制器

[Authorize]
public ActionResult Index()
{
    var userId = WebSecurity.CurrentUserId;
    var model = GetUserInfoService.GetUserInfo(userId);
    Return View(model);
}
于 2013-08-22T22:12:22.653 回答