没有密码的ASP.NET MVC Identity登录
我被赋予修改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.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(user.UserGroupId); //adding claims here ... // AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, new CustomClaimsIdentity(identity)); }
AuthenticationManager将是OwinSecurity。
您只需要使用usermanager按名称查找用户。 如果您有记录,那么只需签名即可。
public ActionResult StupidCompanyLogin() { return View(); } [HttpPost] //[ValidateAntiForgeryToken] - Whats the point? F**k security public async Task StupidCompanyLogin(string name) { var user = await UserManager.FindByNameAsync(name); if (user != null) { await SignInManager.SignInAsync(user, true, true); } return View(); }
- 何时适合使用CacheItemRemovedCallback?
- ASP MVC.NET – 如何绑定KeyValuePair?
- 如何在Asp.net MVC和entity framework中进行分页时应用filter?
- SignalR Context.User.Name返回空
- api控制器的文件下载问题
- 传递到字典中的模型项的类型为’System.Data.Entity.Infrastructure.DbQuery’,但此字典需要B类型的模型项
- 如何在ASP.NET MVC中组织DAL
- 在asp.net mvc中以编程方式中止OutputCache持续时间
- 用reflection动态调用textboxfor