登录后使用用户,C#标识
本文关键字:标识 用户 登录 | 更新日期: 2023-09-27 18:29:34
我有以下定义用户的类:
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类来表示登录的用户吗?
AppUser是数据库中相应用户表的描述,因此我如何访问属于登录用户的所有这些属性?我可以使用var ctx = Request.GetOwinContext();
中的一些信息吗?
例如,在PHP中,您使用的是表示用户的session_id。但是在C#中,您是如何使用Identity实现的呢?
您可以通过这种方式在任何控制器HttpContext.Current.user.Identity 中检索在HttpRequest中验证的用户
如果您的请求以这种方式进行身份验证,我建议您进行验证HttpContext.Current.User.Identity.IsAuthenticated
在控制器中的Asp.Net Mvc中,您可以使用类ViewContex 检索上下文吗
我希望我帮助了