没有密码的ASP.NET MVC Identity登录

时间:2015-01-23 13:25:25

标签: c# asp.net-mvc password-protection

我被赋予修改ASP.NET MVC应用程序的权限,以便冲浪到myurl?username = xxxxxx会自动登录用户xxxxxx,而不需要密码。

我已经清楚地表明,对于许多与安全相关的原因和情景来说,这是一个可怕的想法,但负责人是有决心的。该网站不会公开发布。

那么:有没有办法在没有密码的情况下登录,例如扩展Microsoft.AspNet.Identity.UserManager并修改AccountController?

一些代码:

  var user = await _userManager.FindAsync(model.UserName, model.Password);
                    if (user != null && IsAllowedToLoginIntoTheCurrentSite(user))
                    {
                        user = _genericRepository.LoadById<User>(user.Id);
                        if (user.Active)
                        {
                            await SignInAsync(user, model.RememberMe);

_userManager包含Microsoft.AspNet.Identity.UserManager的实例。

和SignInAsync():

 private async Task SignInAsync(User user, bool isPersistent)
    {
        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        var identity = await _userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
        if (user.UserGroupId.IsSet())
            user.UserGroup = await _userManager.Load<UserGroup>(user.UserGroupId);

        //adding claims here ... //

        AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, new CustomClaimsIdentity(identity));
    }

AuthenticationManager将是OwinSecurity。

1 个答案:

答案 0 :(得分:59)

您只需使用usermanager按名称查找用户即可。如果您有记录,则只需签名即可。

    public ActionResult StupidCompanyLogin()
    {

        return View();
    }

    [HttpPost]
    //[ValidateAntiForgeryToken] - Whats the point? F**k security 
    public async Task<ActionResult> StupidCompanyLogin(string name)
    {

        var user = await UserManager.FindByNameAsync(name);

        if (user != null)
        {

            await SignInManager.SignInAsync(user, true, true);
        }

        return View();
    }