Tôi đang xây dựng hệ thống thành viên của riêng mình và tôi không muốn làm gì với nhà cung cấp Dịch vụ thành viên MS. Tôi đã tìm kiếm khắp nơi trên internet và đây trên StackOverflow nhưng tất cả những gì tôi có thể tìm thấy là các nhà cung cấp dịch vụ thành viên được xây dựng trên nền tảng của nhà cung cấp Tư cách thành viên MS.
Dù sao thì bây giờ tôi đã kết nối gần hết mọi thứ, nhưng tôi muốn sử dụng thuộc tính Ủy quyền tùy chỉnh đã sử dụng cơ sở hạ tầng thành viên của tôi. Tôi đã xem chủ đề này ở đây trên trang web và tôi đang cố gắng làm điều gì đó tương tự, nhưng tôi không chắc đó là điều tôi cần. Cho đến nay đây là những lớp tôi đã có:
SessionManager:
public static class SessionManager : ISessionManager
{
public static void RegisterSession(string key, object obj)
{
System.Web.HttpContext.Current.Session[key] = obj;
}
public static void FreeSession(string key)
{
System.Web.HttpContext.Current.Session[key] = null;
}
public static bool CheckSession(string key)
{
if (System.Web.HttpContext.Current.Session[key] != null)
return true;
else
return false;
}
public static object ReturnSessionObject(string key)
{
if (CheckSession(key))
return System.Web.HttpContext.Current.Session[key];
else
return null;
}
}
SharweAuthorizeAttribute: ( Tôi không thực sự chắc chắn liệu đó có thực sự là điều tôi nên làm hay không )
public class SharweAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (SessionManager.CheckSession(SessionKeys.User) == true)
return true;
else
return false;
}
}
Bây giờ đây là những gì tôi cần:
- Lớp SharweAuthorizeAttribute của tôi có chính xác ngay từ đầu không?
- Tôi cần có thể chuyển hướng người dùng chưa được xác thực đến trang đăng nhập
Tôi cần cấp quyền cho người dùng dựa trên vai trò của họ (sử dụng nhà cung cấp vai trò của riêng tôi), vì vậy tôi sẽ làm điều gì đó như:
[SharweAuthorize(Roles="MyRole")]
Đó là nó tôi đoán ... Mọi đề xuất đều được hoan nghênh :)
CẬP NHẬT: Được rồi, tôi vừa đọc lại trang đó và tìm ra giải pháp cho câu hỏi số hai:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (SessionManager.CheckSession(SessionKeys.User) == false)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "action", "ActionName" },
{ "controller", "ControllerName" }
});
}
else
base.HandleUnauthorizedRequest(filterContext);
}
Vui lòng cho tôi biết nếu tôi hiểu đúng ...