سؤال

ربما يكون هذا سؤال مبتدئ ولكن؛

لنفترض أن لدي ActionResult وأريد منح حق الوصول إليه بعد ساعات العمل فقط.

لنفترض أيضًا أنني أريد تزيين ActionResult الخاص بي بسمة مخصصة.

لذلك قد يبدو الرمز كما يلي؛

[AllowAccess(after="17:00:00", before="08:00:00")]
public ActionResult AfterHoursPage()
{
    //Do something not so interesting here;

    return View();
}

كيف بالضبط هل سأحصل على هذا للعمل؟

لقد أجريت بعض الأبحاث حول إنشاء السمات المخصصة ولكن أعتقد أنني أفتقد القليل عن كيفية استهلاكها.

من فضلك افترض أنني لا أعرف شيئًا تقريبًا عن إنشائها واستخدامها.

هل كانت مفيدة؟

المحلول

جرب هذا (لم يتم اختباره):

public class AllowAccessAttribute : AuthorizeAttribute
{
    public DateTime before;
    public DateTime after;

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext == null)
            throw new ArgumentNullException("httpContext");

        DateTime current = DateTime.Now;

        if (current < before | current > after)
            return false;

        return true;
    }
}

مزيد من المعلومات هنا:http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/

نصائح أخرى

ما تبحث عنه في .net mvc هو مرشحات الإجراءات.

ستحتاج إلى توسيع فئة ActionFilterAttribute وتنفيذ أسلوب OnActionExecuting في حالتك.

يرى:http://www.asp.net/learn/mvc/tutorial-14-cs.aspx للحصول على مقدمة جيدة لمرشحات الحركة.

أيضًا لشيء مشابه قليلاً، انظر: ASP.NET MVC - إجراء تصفية CustomeAuthorize باستخدام موقع ويب خارجي لتسجيل دخول المستخدم

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top