Tôi đang phát triển ứng dụng web MVC 5 bằng cách sử dụng Phương pháp tiếp cận đầu tiên cơ sở dữ liệu Entity Framework 5 . Tôi đang sử dụng OWIN để xác thực Người dùng. Dưới đây hiển thị phương pháp Đăng nhập của tôi trong Bộ điều khiển tài khoản của tôi.
public ActionResult Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = _AccountService.VerifyPassword(model.UserName, model.Password, false);
if (user != null)
{
var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, model.UserName), }, DefaultAuthenticationTypes.ApplicationCookie, ClaimTypes.Name, ClaimTypes.Role);
identity.AddClaim(new Claim(ClaimTypes.Role, "guest"));
identity.AddClaim(new Claim(ClaimTypes.GivenName, "A Person"));
identity.AddClaim(new Claim(ClaimTypes.Sid, user.userID)); //OK to store userID here?
AuthenticationManager.SignIn(new AuthenticationProperties
{
IsPersistent = model.RememberMe
}, identity);
return RedirectToAction("Index", "MyDashboard");
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Như bạn có thể thấy, tôi đang tạo ClaimsIdentity và thêm một số xác nhận quyền sở hữu vào nó, sau đó chuyển nó tới OWIN bằng AuthenticationManager để thực hiện đăng nhập.
Vấn đề tôi đang gặp phải là tôi không chắc cách truy cập các xác nhận quyền sở hữu trong phần còn lại của ứng dụng của mình, trong Bộ điều khiển hoặc trong Chế độ xem Razor.
Tôi đã thử cách tiếp cận được liệt kê trong hướng dẫn này
Ví dụ: tôi đã thử điều này trong mã Bộ điều khiển của mình để cố gắng truy cập vào các giá trị được chuyển vào Yêu cầu, tuy nhiên, người dùng. Yêu cầu bằng null
var ctx = HttpContext.GetOwinContext();
ClaimsPrincipal user = ctx.Authentication.User;
IEnumerable<Claim> claims = user.Claims;
Có lẽ tôi đang thiếu một cái gì đó ở đây.
CẬP NHẬT
Dựa trên câu trả lời của Darin, tôi đã thêm mã của anh ấy nhưng tôi vẫn không thấy quyền truy cập vào Yêu cầu. Vui lòng xem ảnh chụp màn hình bên dưới cho biết những gì tôi thấy khi di chuột qua danh tính.