在WebSecurity中传递其他数据

时间:2014-12-31 04:51:24

标签: c# asp.net asp.net-mvc asp.net-mvc-4 security

我在ASP.NET MVC 4中使用默认表单身份验证实现。

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
    {
       //Assign additional data
        return RedirectToLocal(returnUrl);
    }

    // If we got this far, something failed, redisplay form
    ModelState.AddModelError("", "The user name or password provided is incorrect.");
    return View(model);
}

这很好用。我需要传递每个登录用户的一些额外数据,以便以后使用,而无需再次访问数据库。 (例如:用户角色和角色详细信息)

WebSecurity中是否有任何实现可以在不使用Session变量的情况下执行此操作?

2 个答案:

答案 0 :(得分:0)

通常,您可以使用代码

在用户注册时存储其他值
WebSecurity.CreateUserAndAccount("username", "somepassword", new{DateCreated=DateTime.Now});

您可以在匿名对象中添加多个属性

WebSecurity.Login只需2个参数即可登录现有用户

答案 1 :(得分:0)

您可以将此方法用于其他值和参数websecurity方法:

WebSecurity.CreateUserAndAccount(model.UserName, model.Password,
                        propertyValues: new
                        {
                            NameFamily = model.NameFamily,
                            PostCode = model.PostCode,
                            Address = model.Address,
                            Phone = model.Phone,
                            Lat = model.Lat,
                            Lng = model.Lng
                        });