‫۴ سال و ۷ ماه قبل، یکشنبه ۲۰ بهمن ۱۳۹۸، ساعت ۰۴:۵۳
- مجددا مثال‌های انتهای بحث را اجرا کردم. مشکلی مشاهده نشد.
- خطای no root element found، به معنای وجود استثنایی در کدهای سمت سرور شما است (یک نمونه مشابه). زمانیکه خطای 500 internal server error را دریافت می‌کنید (برگه Response را مرور کنید، خطای سمت سروری رخ داده )، اگر برنامه را در حالت dotnet run اجرا کرده باشید، تمام خطاهای مرتبط، در پنجره‌ی کنسولی که باز است، لاگ می‌شوند. اگر از ویژوال استودیو استفاده می‌کنید، همین خروجی، در پنجره‌ی دیباگ آن هم درج می‌شود. مرور این خطاهای سمت سرور، برای رفع مشکل الزامی است.  همچنین احتمال دارد خروجی خطاهای سمت سرور، در قسمت مشاهده‌ی محتوای response، در برگه‌ی ابزارهای توسعه دهندگان مرورگر هم ظاهر شود. آن‌را هم بررسی کنید. 
‫۴ سال و ۷ ماه قبل، چهارشنبه ۱۶ بهمن ۱۳۹۸، ساعت ۰۱:۳۵
فرض کنید دومینی به نام contoso.com وجود دارد. به دلایل امنیتی فقط برای این دومین جاری و همچنین تمام زیر دومین‌های آن مانند first_subdomain.contoso.com و second_subdomain.contoso.com می‌توانید کوکی را ایجاد کنید و نمی‌توانید از دومین abc.com برای دومین xyz.com کوکی را تنظیم کنید. به علاوه اگر قرار است این کوکی برای زیر دومین‌های آن قابل خواندن باشد باید این تنظیم ویژه را هم در کدهای سمت سرور اضافه کنید:
options.Cookie.Domain = ".contoso.com";
‫۴ سال و ۷ ماه قبل، دوشنبه ۱۴ بهمن ۱۳۹۸، ساعت ۱۶:۵۲
بله. «... اگر درخواست Ajax ایی را به دومین دیگری ارسال کنید، به صورت پیش‌فرض به همراه کوکی‌های مرتبط نخواهد بود. برای رفع این مشکل نیاز است خاصیت withCredentials را به true تنظیم کنید ...»
$.ajax('http://someotherdomain.com', {
  method: 'POST',
  contentType: 'text/plain',
  data: 'sometext',
  beforeSend: function(xmlHttpRequest) {
     xmlHttpRequest.withCredentials = true;
  }
 });
‫۴ سال و ۷ ماه قبل، دوشنبه ۱۴ بهمن ۱۳۹۸، ساعت ۱۶:۰۳
- یک نمونه مثال کامل کنسول «ASPNETCore Jwt Authentication.ConsoleClient» که کوکی‌های آنتی‌فورجری پس از لاگین را دریافت و پردازش می‌کند؛ مرتبط با پروژه‌ی مطلب «اعتبارسنجی مبتنی بر JWT در ASP.NET Core 2.0 بدون استفاده از سیستم Identity» که در بحث جاری به آن پرداخته شد. مثال Ajax ای آن هم در همان پروژه موجود است.
- اگر «مستند سازی ASP.NET Core 2x API توسط OpenAPI Swagger» را پیاده سازی کنید و مباحث «تکمیل مستندات محافظت از API» را لحاظ کنید، با استفاده از ابزارهایی می‌توانید « تولید خودکار کدهای سمت کلاینت» را هم انجام دهید.
‫۴ سال و ۷ ماه قبل، شنبه ۱۲ بهمن ۱۳۹۸، ساعت ۱۳:۲۷

یک نکته‌ی تکمیلی

ACME V1 تا چند ماه دیگر به پایان خواهد رسید:
In June of 2020 we will stop allowing new domains to validate via ACMEv1.
در این حالت برای ارتقاء به نگارش 2 آن، تنها کافی است نگارش جدید win-acme را دریافت و اجرا کنید (که برای اجرا نیاز به نصب NET Core 3.1. را دارد). همچنین scheduled task قدیمی را هم که در سیستم برای نگارش 1 داشتید، disable کنید.
یک نمونه لاگ اجرای نگارش جدید آن به صورت زیر است:
 A simple Windows ACMEv2 client (WACS)
 Software version 2.1.3.671 (RELEASE, PLUGGABLE)
 IIS version 7.5
 Running with administrator credentials
 Scheduled task not configured yet
 Please report issues at https://github.com/PKISharp/win-acme

 N: Create new certificate (simple for IIS)
 M: Create new certificate (full options)
 L: List scheduled renewals
 R: Renew scheduled
 S: Renew specific
 A: Renew *all*
 O: More options...
 Q: Quit

 Please choose from the menu: m

 Running in mode: Interactive, Advanced

  Please specify how the list of domain names that will be included in the
  certificate should be determined. If you choose for one of the "all bindings"
  options, the list will automatically be updated for future renewals to
  reflect the bindings at that time.

 1: IIS
 2: Manual input
 3: CSR created by another program
 C: Abort

 How shall we determine the domain(s) to include in the certificate?: 1

  Please select which website(s) should be scanned for host names. You may
  input one or more site identifiers (comma separated) to filter by those
  sites, or alternatively leave the input empty to scan *all* websites.

 1: Default Web Site (2 bindings)

 Site identifier(s) or <ENTER> to choose all: 1

 1: dotnettips.info (Site 1)
 2: www.dotnettips.info (Site 1)

  You may either choose to include all listed bindings as host names in your
  certificate, or apply an additional filter. Different types of filters are
  available.

 1: Pick specific bindings from the list
 2: Pick bindings based on a search pattern
 3: Pick bindings based on a regular expression
 4: Pick *all* bindings

 How do you want to pick the bindings?: 4

 1: dotnettips.info (Site 1)
 2: www.dotnettips.info (Site 1)

  Please pick the most important host name from the list. This will be
  displayed to your users as the subject of the certificate.

 Common name: 2

 1: dotnettips.info (Site 1)
 2: www.dotnettips.info (Site 1)

 Continue with this selection? (y*/n)  - yes

 Target generated using plugin IIS: www.dotnettips.info and 1 alternatives

 Suggested friendly name '[IIS] Default Web Site, (any host)', press <ENTER> to
accept or type an alternative: <Enter>

  The ACME server will need to verify that you are the owner of the domain
  names that you are requesting the certificate for. This happens both during
  initial setup *and* for every future renewal. There are two main methods of
  doing so: answering specific http requests (http-01) or create specific dns
  records (dns-01). For wildcard domains the latter is the only option. Various
  additional plugins are available from https://github.com/PKISharp/win-acme/.

 1: [http-01] Save verification files on (network) path
 2: [http-01] Serve verification files from memory (recommended)
 3: [http-01] Upload verification files via FTP(S)
 4: [http-01] Upload verification files via SSH-FTP
 5: [http-01] Upload verification files via WebDav
 6: [dns-01] Create verification records manually (auto-renew not possible)
 7: [dns-01] Create verification records with acme-dns (https://github.com/joohoi/acme-dns)
 8: [dns-01] Create verification records with your own script
 9: [tls-alpn-01] Answer TLS verification request from win-acme
 C: Abort

 How would you like prove ownership for the domain(s) in the certificate?: 2

  After ownership of the domain(s) has been proven, we will create a
  Certificate Signing Request (CSR) to obtain the actual certificate. The CSR
  determines properties of the certificate like which (type of) key to use. If
  you are not sure what to pick here, RSA is the safe default.

 1: Elliptic Curve key
 2: RSA key

 What kind of private key should be used for the certificate?: 2

  When we have the certificate, you can store in one or more ways to make it
  accessible to your applications. The Windows Certificate Store is the default
  location for IIS (unless you are managing a cluster of them).

 1: IIS Central Certificate Store (.pfx per domain)
 2: PEM encoded files (Apache, nginx, etc.)
 3: Windows Certificate Store
 C: Abort

 How would you like to store the certificate?: 3

 1: IIS Central Certificate Store (.pfx per domain)
 2: PEM encoded files (Apache, nginx, etc.)
 3: No additional storage steps required
 C: Abort

 Would you like to store it in another way too?: 3

  With the certificate saved to the store(s) of your choice, you may choose one
  or more steps to update your applications, e.g. to configure the new
  thumbprint, or to update bindings.

 1: Create or update https bindings in IIS
 2: Create or update ftps bindings in IIS
 3: Start external script or program
 4: Do not run any (extra) installation steps

 Which installation step should run first?: 1

 Use different site for installation? (y/n*)  - no

 1: Create or update ftps bindings in IIS
 2: Start external script or program
 3: Do not run any (extra) installation steps

 Add another installation step?: 3

 Enter email(s) for notifications about problems and abuse (comma seperated): name@site.com

 Terms of service:   C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\LE-SA-v1.2-November-15-2017.pdf

 Open in default application? (y/n*)  - no

 Do you agree with the terms? (y*/n)  - yes

 Authorize identifier: dotnettips.info
 Authorizing dotnettips.info using http-01 validation (SelfHosting)
 Authorization result: valid
 Authorize identifier: www.dotnettips.info
 Authorizing www.dotnettips.info using http-01 validation (SelfHosting)
 Authorization result: valid
 Requesting certificate [IIS] Default Web Site, (any host)
 Store with CertificateStore...
 Installing certificate in the certificate store
 Adding certificate [IIS] Default Web Site, (any host) @ 2020/2/1 9:43:55 to store My
 Installing with IIS...
 Updating existing https binding www.dotnettips.info:443 (flags: 0)
 Updating existing https binding dotnettips.info:443 (flags: 0)
 Committing 2 https binding changes to IIS
 Adding Task Scheduler entry with the following settings
 - Name win-acme renew (acme-v02.api.letsencrypt.org)
 - Path C:\Programs\win-acme.v2.1.3.671.x64.pluggable
 - Command wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
 - Start at 09:00:00
 - Time limit 02:00:00

 Do you want to specify the user the task will run as? (y/n*)  - no
‫۴ سال و ۷ ماه قبل، چهارشنبه ۹ بهمن ۱۳۹۸، ساعت ۲۳:۳۷
در DynamicPermissionsAuthorizationHandler زمانیکه به rout data دسترسی پیدا کردید، مابقی تصمیم گیری‌ها بر اساس اطلاعات آن صورت می‌گیرند. بر روی سطر پس از آن، یک break-point را قرار دهید و محتوای این شیء را بررسی کنید. برای مثال در مورد razor pages می‌تواند چنین ساختاری را داشته باشد:
{
  "DataTokens":{},
  "Routers":[],
  "Values":{"page":"/Index","id":"101273123"}
}
بنابراین بله؛ در اینجا هم می‌توان بر اساس خاصیت Values و page و سایر پارامترها، در مورد دسترسی دادن به کاربر جاری، تصمیم گیری پویایی را انجام داد.