ASP MVC 4身份验证获取用户名

时间:2014-04-16 06:35:34

标签: asp.net-mvc

所以,我正在我的应用程序中实现身份验证。 存储在xml文件中的信用卡(不是真实的项目)。

这是代码:

public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (ModelState.IsValid && Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
            return RedirectToAction("Index", "Objects", new ObjectsModel(//user name));
        }

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


public class CustomMembershipProvider : SimpleMembershipProvider
{
    public override bool ValidateUser(string username, string password)
    {
        return true;
    }
}

[Authorize]
public class ObjectsController : Controller
{
    public ActionResult Index()
    {
        return View(new ObjectsModel(//get authentificated username));
    }
}

两个问题:

  1. 我做得对吗?或者我必须使用WebSecurity等。这对于安全的应用程序是否足够?或者我对全体员工有很大的误解?
  2. 如何在ObjectsController(注释行)中的UserName中输入?

2 个答案:

答案 0 :(得分:2)

我做得对吗?或者我必须使用WebSecurity等。这对于安全的应用程序是否足够?或者我对全体员工有很大的误解?

  • 自定义身份验证需要做很多工作,作为包含 UserContext UserProfiles IPrincipal 的成员身份基础结构的一部分。如果您只想根据文件而不是model / dbcontext验证用户,那么可以通过标准的 WebSecurity 实现轻松完成。

  • Visual Studio附带了asp.net mvc模板项目成员资格实现就绪代码。它将让您深入了解模型,背景。

您可以查看this article了解详情。

如何在ObjectsController(注释行)的UserName中获取内容?

  • 理想情况下,您的自定义身份验证应公开IPrincipal用户上下文(User.Identity),您可以在项目视图/控制器周围的任何位置使用它。

答案 1 :(得分:0)

Visual Studio附带Asp.Net MVC Template project membership实现就绪代码。(是@PalakBhansali答案是正确的。)

您可以通过在Visual Studio中创建新项目来获取示例应用程序。您可以根据需要修改代码。

File-> New -> Visual C# -> Web -> ASP.NET MVC 4/3/2 Application

注意:不是空的Web应用程序

  • 这将是一个安全的应用程序。
  • 您可以通过@User.Identity.Name登录用户名。
  • 然后你正在学习项目。

祝你好运;)