2017-03-14 17 views
10

Tôi có một ứng dụng mà người dùng có thể được gán các vai trò sau:tuyên bố Owin - Thêm nhiều ClaimTypes.Role

  • trị cấp cao
  • quản
  • tài

Một người dùng có thể có được chỉ định hai hoặc nhiều vai trò, ví dụ: cả SuperAdmin và Người dùng. Ứng dụng của tôi sử dụng xác nhận quyền sở hữu và do đó tôi cũng muốn xác thực vai trò người dùng thông qua xác nhận quyền sở hữu. như:

[Authorize(Roles="Admin")] 

Thật không may, tôi không biết cách tôi có thể thêm nhiều vai trò vào ClaimTypes.Role của mình. Tôi có đoạn mã sau:

var identity = new ClaimsIdentity(new[] { 
       new Claim(ClaimTypes.Name, name), 
       new Claim(ClaimTypes.Email, email), 
       new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin") 
     }, 
      "ApplicationCookie"); 

Như bạn có thể thấy, tôi đã cố gắng thêm nhiều vai trò để minh họa, nhưng rõ ràng nó được thực hiện sai và do đó không hoạt động. Do đó, mọi trợ giúp đều được đánh giá cao.

Trả lời

16

Danh tính xác nhận quyền sở hữu có thể có nhiều xác nhận quyền sở hữu với cùng một ClaimType. Điều đó sẽ giúp bạn có thể sử dụng phương thức HasClaim để kiểm tra xem có một vai trò người dùng cụ thể không.

var identity = new ClaimsIdentity(new[] { 
      new Claim(ClaimTypes.Name, name), 
      new Claim(ClaimTypes.Email, email), 
      new Claim(ClaimTypes.Role, "User"), 
      new Claim(ClaimTypes.Role, "Admin"), 
      new Claim(ClaimTypes.Role,"SuperAdmin") 
    }, 
     "ApplicationCookie"); 
+0

Điều đó khá tuyệt vời, tôi đoán tôi chỉ có thể tạo vòng lặp từ truy vấn db của mình sau đó! Cảm ơn bạn! –