2012-10-20 44 views
5

(Tôi đang nói về dự án SS tinh khiết, xin vui lòng không nên nhầm với MVC Razor)ServiceStack đặt xác thực để Razor view

Làm thế nào để chúng tôi giới hạn chuyến thăm một SS Razor xem với xác thực?

Tức là, làm cách nào để chúng tôi gọi phiên người dùng và mã xác thực từ SS Razor?

Tôi muốn làm một cái gì đó như thế này:

@inherits ViewPage 
@Authenticate(RedirectUrl = "/Login") 

<div>Hello @UserSession.UserName</div> 
<div>You are in the secured area now</div> 

Trả lời

3

Tôi không biết về bất kỳ phương pháp để làm điều này trực tiếp từ một trang SS Razor. Tuy nhiên, khi tôi có cùng một tình huống khó xử, tôi đã giải quyết nó bằng cách tạo một dịch vụ phục vụ lên trang thay thế. Bằng cách đó bạn có thể trang trí dịch vụ của trang với thuộc tính Authorize và nó sẽ được chuyển hướng đến trang đăng nhập nếu người dùng không được xác thực.

[Authorize] 
public class MyPageService : IService<MyRequestDTO> 
{ 
    public object Execute(MyRequestDTO request) 
    { 
     ... 
     return new MyPageViewModel(); 
    } 
} 

Để truy xuất phiên hiện tại trên trang dao cạo, bạn có thể sử dụng GetSession<T>.

@{ 
    var currentSession = GetSession<CustomUserSession>(); 
} 

<div>Hello @currentSession.UserName</div> 

Một ưu điểm khác là bạn có thể xem mạnh mẽ và cung cấp dữ liệu cho chế độ xem từ dịch vụ.

@inherits ViewPage<MyPageViewModel> 
+0

Thứ nhất, cảm ơn rất nhiều vì đã trả lời. Khi bạn nói "sử dụng một giao diện dịch vụ", bạn có nghĩa là, làm cho một lớp cơ sở như "AuthenticateService" sau đó "MyService" kế thừa đó. MyService: AuthenticateService, cũng có AuthenticateResponse: IhasResponseStatus rồi MyResponse: AuthenticateResponse ... như thế? – Tom

+0

@Tom, sử dụng từ ngữ xấu ở đó. Ý tôi là tạo ra một dịch vụ. Tôi đã chỉnh sửa câu trả lời. – Ostemar

+0

cảm ơn bạn. Bây giờ tôi hiểu rồi. – Tom

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