2011-06-28 38 views
5

bạn có thể nghĩ rằng câu hỏi này nên được trên Meta SO nhưng nó không nên, vì nó về cơ bản về ASP.Net MVC nhưng kỹ thuật tôi muốn thực hiện đã được thực hiện trong SO.Làm cách nào để triển khai Quyền người dùng dựa trên danh tiếng như SO?

Tôi muốn người dùng có quyền lực trong khi họ có được danh tiếng hơn giống như cách chúng tôi thực hiện trong StackOverflow và câu hỏi của tôi là cách thiết kế hệ thống xác thực người dùng? Chúng tôi có thể dựa vào Xác thực biểu mẫu được tích hợp không? và cách quản lý liên kết nào (tùy thuộc vào danh tiếng) được hiển thị cho người dùng và những gì không?

Tôi nghĩ chúng tôi không thể sử dụng Vai trò ở đây để chúng tôi không kết thúc với 1000 vai trò, đúng không? nhưng chúng tôi chỉ có thể sử dụng 2 Vai trò (Quản trị viên, Người dùng).

[Chỉnh sửa]:
tôi nghĩ rằng nó là tốt hơn để tạo ra bảng Người dùng của riêng tôi chứ không phải tùy thuộc vào hình thức xác thực, và vì vậy tôi có thể thêm lĩnh vực uy tín (và các lĩnh vực khác) vào bảng người sử dụng và theo dõi nó như bạn đã nói. BTW @MartinHN, tôi biết về số if mà bạn đã nói, nhưng câu hỏi của tôi là có cách thông minh hơn để xử lý các vấn đề như vậy?

+0

Tôi tưởng tượng SO xử lý "quyền danh tiếng" trong nội bộ và mọi người dùng bình thường chỉ là "Người dùng", nhưng tôi chưa bao giờ thấy nguồn đó là WAG. –

+0

Bạn có nhầm lẫn "xác thực" và "ủy quyền" không? StackExchange sử dụng OpenID để xác thực, không xác định các quyền mà bạn có. –

+0

Không, tôi không phải là, tôi chỉ muốn tìm một hệ thống có thể đủ khả năng để dễ bảo trì/mở rộng trong tương lai. –

Trả lời

5

Bạn có thể tạo hệ thống quy tắc đơn giản. Mỗi người dùng có điểm danh tiếng được liên kết với họ. Sau đó, sử dụng số action filter bạn có thể kiểm soát quyền truy cập vào các chức năng trong hệ thống của mình:

public class SomeController : IController 
{ 
    ... 
    [ReputationNeeded(Reputations.CanVoteDown)] // your custom action filter 
    [HttpPost] 
    public ActionResult VoteDown(...) 
    { /* */ } 
} 

Chúc may mắn!

+0

+1 Cảm ơn bạn rất nhiều, đây là một phần của những thứ tuyệt vời mà tôi muốn. –

+0

Một câu hỏi khác, làm cách nào để truy cập đối tượng người dùng (và sau đó là danh tiếng) trong lớp bộ lọc hành động? Ý tôi là đây không phải là một phần của bối cảnh, làm thế nào để giải quyết vấn đề này? –

+1

Có nhiều cách, tôi đoán vậy. Một được thảo luận ở đây: http://stackoverflow.com/questions/5758611/mvc3-action-filter-using-database-ef-4-1-dbcontext-ninject. –

3

Quản lý danh tiếng của người dùng và những gì họ có quyền truy cập (được đo bằng danh tiếng), không nên là một phần của cơ chế xác thực, IMHO.

Trên web, bạn chủ yếu sử dụng Xác thực biểu mẫu và sau khi được xác thực, bạn có thể áp dụng danh tiếng cho người dùng và khu vực đóng nếu người dùng không có đủ danh tiếng.

Tôi sẽ không làm cho tính năng này là một phần của hệ thống xác thực. Tôi chỉ cho phép người dùng xác thực và sau đó hiển thị các chế độ xem phù hợp cho bất kỳ người dùng cụ thể nào.

Nói thay đổi điều hướng chính của bạn tùy thuộc vào danh tiếng. Bạn gói các mục của thanh điều hướng yêu cầu hơn 1000 đại diện. với tuyên bố if và không hiển thị nếu người dùng có dưới 1000.

+0

+1 Thông tin. –

Các vấn đề liên quan