我有以下定义用户的类:
public class AppUser : IdentityUser
{
public int UserType { get; set; }
[DefaultValue("true")]
public bool NewUser { get; set; }
}
我使用以下代码在我的AuthController中登录用户:
public async Task<ActionResult> LogIn(LogInModel model)
{
if (!ModelState.IsValid)
{
return View();
}
var user = await userManager.FindAsync(model.Email, model.Password);
if (user != null)
{
await SignIn(user);
return Redirect(GetRedirectUrl(model.ReturnUrl));
}
// user authN failed
ModelState.AddModelError("", "Invalid email or password");
return View();
}
这是我的控制器在用户登录时处理所有内容:
[Authorize]
public class HomeController : Controller
{
private readonly UserManager<AppUser> userManager;
public HomeController()
: this(Startup.UserManagerFactory.Invoke())
{
}
public HomeController(UserManager<AppUser> userManager)
{
this.userManager = userManager;
}
// GET: Home
public ActionResult Index()
{
var ctx = Request.GetOwinContext();
var authManager = ctx.Authentication;
//var rolesForUser = userManager.GetRoles(user.Id);
//Kolla om det är new user
//Om det är new user, visa "setup"-sida där man kan konfa sitt konto
//Annars renderar vi default
return View();
}
protected override void Dispose(bool disposing)
{
if (disposing && userManager != null)
{
userManager.Dispose();
}
base.Dispose(disposing);
}
}
我的问题是:我如何使用登录用户?如何在用户登录后访问该用户?我可以在这里使用AppUser-class来代表登录的用户吗?
AppUser是数据库中相应用户表的描述,那么如何访问属于登录用户的所有属性?我可以使用var ctx = Request.GetOwinContext();
中的一些信息吗?
例如,在PHP中,您使用的是代表用户的session_id。但是你如何在C#中使用Identity?
答案 0 :(得分:1)
你可以在任何控制器HttpContext.Current.User.Identity
中检索以HttpRequest身份验证的用户我建议你验证你的请求是否通过这种方式验证HttpContext.Current.User.Identity.IsAuthenticated
在Asp.Net中,控制器中的Mvc可以使用ViewContex类
检索上下文我希望我帮助