we’re releasing a special Installer of Visual Studio Code for Java developers. The package can be used as a clean install or an update for existing environment to add Java or Visual Studio Code to your development environment.
این روش به دلیل عدم وجود ذخیره کوکی، ایجاد Session و دیگر مباحث امنیتی، جز سادهترین روشهای تشخیص هویت میباشد و همچنین مشخص است به دلیل رمزگذاری سادهای چون Base64 و همچنین در صورت ارسال از طریق http نه https، حفاظت چندانی در ارسال الزامات امنیتی ندارند. ولی عموما برای گوشیهای همراه تا حد زیادی قابل قبول است. همچنین در این روش مکانیزم logout فراهم نیست و تنها در طی یک درخواست پردازش اطلاعات انجام شده و بعد از آن هویت شما نابود خواهد شد.
برای ارسال اطلاعات در هدر درخواستی، به شیوه زیر اطلاعات را ارسال میکنیم:
Authorization: Basic Username:Password
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
public class BasicAuthetication:AuthorizationFilterAttribute { public override void OnAuthorization(HttpActionContext actionContext) { if (actionContext.Request.Headers.Authorization == null) { SayYouAreUnAuthorize(actionContext); return; } var param = actionContext.Request.Headers.Authorization.Parameter; var decodedCridential = Encoding.UTF8.GetString(Convert.FromBase64String(param)); var splitedArray = decodedCridential.Split(':'); if (splitedArray[0] == "username" && splitedArray[1] == "password") { var userId = 1; var genericIdentity=new GenericIdentity(userId.ToString()); var genericPrincipal=new GenericPrincipal(genericIdentity,null); Thread.CurrentPrincipal = genericPrincipal; return; } SayYouAreUnAuthorize(actionContext); } private void SayYouAreUnAuthorize(HttpActionContext actionContext) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized); } }
در اولین خط از کد بررسی میشود که خاصیت Authorization در هدر درخواست وجود دارد یا خیر؛ در صورت که وجود نداشته باشد متد SayYouAreUnAuthorize صدا زده میشود. این متد وظیفه دارد، در صورتیکه صحت نام کاربری و کلمه عبور تایید نشد، خطای مورد نظر را که با کد 401 شناخته میشود، بازگرداند که در متد اصلی دو بار مورد استفاده قرار گرفته است. با استفاده از این بازگردانی و دادن پاسخ کاربر، دیگر api مورد نظر به مرحله اجرا نمیرسد.
در صورتیکه کد ادامه پیدا کند، مقدار تنظیم شده Authorization را دریافت کرده و در خط بعدی آن را از حالت انکود شده خارج میکنیم. از آنجاکه الگوی ارسالی ما به شکل username:password میباشد، با استفاده از متد الحاقی Split هر دو عبارت را جدا کرده و در خط بعد، صحت آن دو را مشخص میکنیم. از آنجا که این تکه کد تنها یک تست است، من آن را به شکل ساده و استاتیک نوشتهام. بدیهی است که در یک مثال واقعی، این تایید صحت توسط یک منبع داده انجام میشود. در صورتی که صحت آن تایید نشود مجددا متد SayYouAreUnAuthorize مورد استفاده قرار میگیرد. در غیر این صورت باید این تایید هویت را در ترد جاری تایید کرده و حفظ کنیم و حتی در صورت لزوم Id کاربر و نقشهای آن را ذخیره کنیم تا اگر api مورد نظر بر اساس آن تصمیم میگیرد، آنها را در اختیار داشته باشیم. به عنوان مثال ممکن است اطلاعات دریافتی پرداختیهای یک کاربر باشد که به UserId نیاز است.
از آنجا که در این روش نه ذخیره session و نه کوکی و نه مورد دیگری داریم و قصد داریم تنها در ترد یا درخواست جاری این اعتبار را نگه داریم، میتوانیم از thread.CurrentPrincipal استفاده کنیم. این خصوصیت نوع GenericPrincipal را نیاز دارد که دو پارامتر GenereicIdentity و آرایهای از نوع رشته را دریافت میکنید. این آرایهها متعلق به زمانی است که شما قصد دارید نقشهای یک کاربر را ارسال کنید و شیء GenericIdentity شیءایی است که شامل اطلاعات Authorization بوده و هیچ وابستگی به windows Domain ندارد. این شیء از شما تنها یک نام را به صورت رشته میگیرد که میتوانیم از طریق آن UserId را پاس کنیم. برای دریافت آن نیز داریم:
var userId=int.Parse(Thread.CurrentPrincipal.Identity.Name);
[BasicAuthetication] public HttpResponseMessage GetPayments(int type) { var userId = int.Parse(Thread.CurrentPrincipal.Identity.Name); if (type == 1) { return Request.CreateResponse(HttpStatusCode.OK, new { Id = 4, Price = 20000, userId=userId }); } return Request.CreateResponse(HttpStatusCode.OK, new { Id = 3, Price = 10000, userId = userId }); }
در api بالا attribute مدنظر بر روی آن اعمال شده و تنها مقادیر ورودی این api همان پارامترهای درخواست اصلی میباشد و ویژگی BasicAuthentication کدهای اعتبارسنجی را از کد اصلی دور نگه داشته است و api اصلی هیچگاه متوجه قضیه نمیشود و تنها کار اصلی خود را انجام میدهد. همچین در اینجا از طریق کلاس thread به UserId دسترسی داریم.
حال تنها لازم است کلاینت، قسمت هدر را پر کرده و آن را به سمت سرور ارسال کند. در اینجا من از نرم افزار I'm only resting استفاده میکنیم تا درخواست رسیده را در WebApi تست نمایم.
نگاهی به مراحل تکامل زبان #C
افزونهی Version Lens برای VSCode
برگزاری dotnetConf 2016
Immerse yourself in the world of .NET and join our live stream for 3 days of free online content June 7 - 9 featuring speakers from the .NET Community and Microsoft product teams.
Learn to develop for web, mobile, desktop, games, services, libraries and more for a variety of platforms and devices all with .NET! We'll have presentations on .NET Core and ASP.NET Core, C#, F#, Roslyn, Visual Studio, Universal Windows Platform (UWP), Xamarin, and much more.
In short, we’re making Xamarin’s cross-platform tools available in
Visual Studio, from Community up through Enterprise at no additional
cost and we’re open-sourcing the Xamarin SDK – the core of the Xamarin
toolchain. In addition, we’re making Xamarin’s services (for example,
Test Cloud and Xamarin University) available along with the existing
Microsoft mobile DevOps capabilities.
https://blog.xamarin.com/xamarin-for-all/?utm_medium=social&utm_campaign=blog&utm_source=twitter&utm_content=xamarin-for-all
متدهای الحاقی - Extension Methods
Microsoft Visual Studio TF31002: Unable to connect to this Team Foundation Server: http://dntextensions.codeplex.com/. Team Foundation Server Url: http://dntextensions.codeplex.com/. Possible reasons for failure include: - The name, port number, or protocol for the Team Foundation Server is incorrect. - The Team Foundation Server is offline. - The password has expired or is incorrect. Technical information (for administrator): The remote server returned an error: (404) Not Found.
Service Pack 2 آفیس 2010
Service Pack 2 for Microsoft Office 2010 (KB2687455) 64-Bit Edition
Service Pack 2 for Microsoft PowerPoint Viewer (KB2687456) 32-Bit Edition
Service Pack 2 for Microsoft SharePoint Foundation 2010 (KB2687464)
Service Pack 2 for Microsoft Office 2010 Language Pack (KB2687449) 32-Bit Edition
Service Pack 2 for Microsoft SharePoint 2010 Indexing Connector for Documentum (KB2687459)
Service Pack 2 for Microsoft Visio 2010 (KB2687468) 64-Bit Edition
Service Pack 2 for Microsoft Access 2010 Runtime (KB2687444) 32-Bit Edition
Service Pack 2 for SharePoint Foundation 2010 Client Object Model Redistributable (KB2687467) 32-Bit Edition
Service Pack 2 for Microsoft Access 2010 Runtime (KB2687444) 64-Bit Edition
لیست کامل
وبلاگها و سایتهای ایرانی
امنیت
Visual Studio
ASP. Net
طراحی وب
PHP
- Aptana PHP 1.0 منتشر شد (اگر قبلا این IDE بسیار قابل توجه را دریافت کرده بودید فقط کافی است به منوی aptana و گزینه my aptana مراجعه کرده و از قسمت plugins ، این پلاگین 18 مگابایتی را دریافت کنید.)
اسکیوال سرور
سی شارپ
عمومی دات نت
ویندوز
متفرقه
- مزایای مهاجرت از ویژوال سورس سیف مایکرسافت به SVN
- افزونهای برای فایرفاکس جهت GUI prototyping (خیلی کار جالبی کرده ولی چرا به صورت یک افزونه؟)
فناوریهایی برای مطالعه در سال 2017
- .NET Core
- Node.js
- Docker
- Elasticsearch: A distributed and open source search engine based on Lucene. A blazing fast NoSQL database with replication capabilities, it is the most widely known component of the ELK stack, together with Kibana (for reporting and visualizations), Logstash (for data import) and Beats (for data shipping). Even Azure Search uses it behind the covers. Free but some tools are paid. Get it from http://elastic.co.
- ECMAScript 2015
- HTML5
- Kafka
- TypeScript
- MongoDB
- Git
- Nginx
- Octopus Deploy
- Azure
- Amazon Web Services
- Linux
- Visual Studio Code
- Xamarin
- Google Analytics
- SQL Server 2016
- Let’s Encrypt
- TensorFlow
- GitLab
- Redis