وبلاگ بلیان

Pro ASP.NET Core MVC 2 : develop cloud-ready web applications using Microsoft's latest framework, ASP.NET Core MVC 2

جلد کتاب Pro ASP.NET Core MVC 2 : develop cloud-ready web applications using Microsoft's latest framework, ASP.NET Core MVC 2

معرفی کتاب «Pro ASP.NET Core MVC 2 : develop cloud-ready web applications using Microsoft's latest framework, ASP.NET Core MVC 2» نوشتهٔ Freeman, Adam، منتشرشده توسط نشر Apress; Springer Science+Business Media در سال 2017. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است.

Now in its 7th edition, the best selling book on MVC is updated for ASP.NET Core MVC 2. It contains detailed explanations of the Core MVC functionality which enables developers to produce leaner, cloud optimized and mobile-ready applications for the .NET platform. This book puts ASP.NET Core MVC into context and dives deep into the tools and techniques required to build modern, cloud optimized extensible web applications. All the new MVC features are described in detail and the author explains how best to apply them to both new and existing projects. The ASP.NET Core MVC Framework is the latest evolution of Microsoft's ASP.NET web platform, built on a completely new foundation. It represents a fundamental change to how Microsoft constructs and deploys web frameworks and is free of the legacy of earlier technologies such as Web Forms. ASP.NET Core MVC provides a "host agnostic" framework and a high-productivity programming model that promotes cleaner code architecture, test-driven development, and powerful extensibility. Best-selling author Adam Freeman has thoroughly revised this market-leading book and explains how to get the most from ASP.NET Core MVC. He starts with the nuts-and-bolts and shows you everything through to advanced features, going in-depth to give you the knowledge you need. The book includes a fully worked case study of a functioning web application that readers can use as a template for their own projects. What's New in This Edition Fully updated for Visual Studio 2017, C# 7 and .NET Core 2 Coverage of new features such as view filters Wider platform and tooling coverage than ever before, with more on Visual Studio Code and working with .NET Core on non-Windows platforms Docker-based application deployment What You Will Learn Gain a solid architectural understanding of ASP.NET Core MVC Explore the entire ASP.NET MVC Framework as a cohesive whole See how MVC and test-driven development work in action Learn what's new in ASP.NET Core MVC 2 and how best to apply these new features to your own work See how to create RESTful web services and Single Page Applications Build on your existing knowledge of previous MVC releases to get up and running with the new programming model quickly and effectively Who This Book Is For This book is for web developers with a basic knowledge of ASP.NET and C# who want to incorporate the latest improvements and functionality in the ASP.NET Core MVC 2 Framework. Contents at a Glance......Page 5 Contents......Page 7 About the Author......Page 27 About the Technical Reviewer......Page 28 Part I: Introducing ASP.NET Core MVC 2......Page 29 Understanding the History of ASP.NET Core MVC......Page 30 What Was Wrong with ASP.NET Web Forms?......Page 31 Understanding ASP.NET Core......Page 32 MVC Architecture......Page 33 Testability......Page 34 Cross-Platform......Page 35 Where Can You Get the Example Code?......Page 36 Summary......Page 37 Installing Visual Studio......Page 38 Installing the .NET Core 2.0 SDK......Page 39 Creating a New ASP.NET Core MVC Project......Page 40 Adding the Controller......Page 44 Creating and Rendering a View......Page 47 Adding Dynamic Output......Page 50 Setting the Scene......Page 52 Designing a Data Model......Page 53 Creating a Second Action and a Strongly Typed View......Page 54 Linking Action Methods......Page 56 Building the Form......Page 57 Receiving Form Data......Page 59 Using Model Binding......Page 60 Storing Responses......Page 61 Displaying the Responses......Page 64 Adding Validation......Page 66 Highlighting Invalid Fields......Page 70 Styling the Welcome View......Page 72 Styling the RsvpForm View......Page 74 Styling the Thanks View......Page 76 Styling the List View......Page 77 Summary......Page 78 Understanding Models......Page 79 Understanding Controllers......Page 80 The ASP.NET Implementation of MVC......Page 81 Understanding the Smart UI Pattern......Page 82 Understanding the Model-View Architecture......Page 83 Understanding Classic Three-Tier Architecture......Page 84 Understanding the Model-View-View Model Pattern......Page 85 Creating the Project......Page 86 Understanding MVC Conventions......Page 89 Following Conventions for Views......Page 90 Summary......Page 91 Chapter 4: Essential C# Features......Page 92 Preparing the Example Project......Page 93 Enabling ASP.NET Core MVC......Page 94 Creating the Model......Page 95 Creating the Controller and View......Page 96 Using the Null Conditional Operator......Page 98 Chaining the Null Conditional Operator......Page 99 Combining the Conditional and Coalescing Operators......Page 100 Using Automatically Implemented Properties......Page 101 Using Auto-Implemented Property Initializers......Page 102 Creating Read-Only Automatically Implemented Properties......Page 103 Using String Interpolation......Page 104 Using Object and Collection Initializers......Page 105 Using an Index Initializer......Page 107 Pattern Matching......Page 108 Pattern Matching in Switch Statements......Page 109 Using Extension Methods......Page 110 Applying Extension Methods to an Interface......Page 111 Creating Filtering Extension Methods......Page 113 Using Lambda Expressions......Page 115 Defining Functions......Page 116 Using Lambda Expression Methods and Properties......Page 119 Using Type Inference and Anonymous Types......Page 121 Using Anonymous Types......Page 122 Working with Tasks Directly......Page 124 Applying the async and await Keywords......Page 126 Getting Names......Page 127 Summary......Page 129 Chapter 5: Working with Razor......Page 130 Preparing the Example Project......Page 131 Creating the Controller......Page 132 Creating the View......Page 133 Working with the Model Object......Page 134 Using View Imports......Page 136 Working with Layouts......Page 137 Creating the Layout......Page 138 Applying a Layout......Page 140 Using a View Start File......Page 141 Using Razor Expressions......Page 143 Inserting Data Values......Page 144 Setting Attribute Values......Page 146 Using Conditional Statements......Page 147 Enumerating Arrays and Collections......Page 149 Summary......Page 151 Preparing the Example Project......Page 152 Creating the Model......Page 153 Creating the Controller and View......Page 154 Understanding NuGet......Page 156 Understanding the NuGet Packages List and Location......Page 157 Understanding the Bower Packages List......Page 158 Understanding Iterative Development......Page 162 Making Changes to Razor Views......Page 163 Compiling Classes Automatically......Page 164 Enabling Developer Exception Pages......Page 166 Using the Debugger......Page 167 Setting a Breakpoint......Page 168 Viewing Data Values in the Code Editor......Page 169 Using the Locals Window......Page 171 Setting Up Browser Link......Page 172 Using Browser Link......Page 173 Using Multiple Browsers......Page 175 Preparing JavaScript and CSS for Deployment......Page 177 Adding Static Content to the Project......Page 178 Updating the View......Page 181 Installing the Visual Studio Extension......Page 182 Bundling and Minifying Files......Page 183 Summary......Page 186 Chapter 7: Unit Testing MVC Applications......Page 187 Adding Actions to the Controller......Page 188 Creating the Data Entry Form......Page 189 Updating the Index View......Page 190 Unit Testing MVC Applications......Page 191 Creating a Unit Test Project......Page 192 Writing and Running Unit Tests......Page 193 Running Tests with the Test Explorer......Page 196 Isolating Components for Unit Testing......Page 198 Isolating a Component......Page 199 Parameterizing a Unit Test......Page 206 Getting Test Data from a Method or Property......Page 207 Improving Fake Implementations......Page 210 Adding a Mocking Framework......Page 211 Creating a Mock Object......Page 213 Summary......Page 215 Chapter 8: SportsStore: A Real Application......Page 216 Creating the MVC Project......Page 217 Creating the Folder Structure......Page 218 Configuring the Application......Page 219 Creating the Unit Test Project......Page 221 Checking and Running the Application......Page 222 Starting the Domain Model......Page 223 Creating a Repository......Page 224 Registering the Repository Service......Page 225 Displaying a List of Products......Page 226 Adding a Controller......Page 227 Adding and Configuring the View......Page 228 Setting the Default Route......Page 230 Preparing a Database......Page 231 Installing the Entity Framework Core Tools Package......Page 232 Creating the Repository Class......Page 233 Defining the Connection String......Page 234 Configuring the Application......Page 235 Disabling Scope Verification......Page 236 Creating the Database Migration......Page 237 Creating the Seed Data......Page 238 Adding Pagination......Page 241 Adding the View Model......Page 243 Adding the Tag Helper Class......Page 244 Adding the View Model Data......Page 247 Displaying the Page Links......Page 250 Improving the URLs......Page 252 Installing the Bootstrap Package......Page 254 Applying Bootstrap Styles to the Layout......Page 255 Creating a Partial View......Page 258 Summary......Page 259 Filtering the Product List......Page 260 Refining the URL Scheme......Page 265 Creating the Navigation View Component......Page 269 Generating Category Lists......Page 270 Creating the View......Page 272 Highlighting the Current Category......Page 273 Correcting the Page Count......Page 276 Defining the Cart Model......Page 280 Adding the Add to Cart Buttons......Page 284 Enabling Sessions......Page 286 Implementing the Cart Controller......Page 287 Defining Session State Extension Methods......Page 288 Displaying the Contents of the Cart......Page 289 Summary......Page 293 Creating a Storage-Aware Cart Class......Page 294 Registering the Service......Page 295 Simplifying the Cart Controller......Page 296 Removing Items from the Cart......Page 297 Adding the Font Awesome Package......Page 299 Creating the View Component Class and View......Page 300 Creating the Model Class......Page 302 Adding the Checkout Process......Page 303 Extending the Database......Page 307 Creating the Order Repository......Page 308 Completing the Order Controller......Page 310 Displaying Validation Errors......Page 313 Displaying a Summary Page......Page 315 Summary......Page 316 Enhancing the Model......Page 317 Adding the Actions and View......Page 318 Adding Catalog Management......Page 321 Creating a CRUD Controller......Page 322 Implementing the List View......Page 324 Editing Products......Page 325 Creating the Edit Action Method......Page 326 Creating the Edit View......Page 327 Updating the Product Repository......Page 329 Handling Edit POST Requests......Page 331 Displaying a Confirmation Message......Page 333 Adding Model Validation......Page 334 Enabling Client-Side Validation......Page 337 Creating New Products......Page 339 Deleting Products......Page 340 Summary......Page 344 Creating the Context Class......Page 345 Defining the Connection String......Page 346 Configuring the Application......Page 347 Defining the Seed Data......Page 348 Applying a Basic Authorization Policy......Page 350 Creating the Account Controller and Views......Page 352 Creating the Databases......Page 356 Getting the Connection Strings......Page 357 Creating the Error Controller and View......Page 358 Defining the Production Database Settings......Page 359 Configuring the Application......Page 360 Managing Database Seeding......Page 362 Seeding Identity Data......Page 363 Seeding the Product Data......Page 364 Deploying the Application......Page 366 Summary......Page 370 Installing Node.js......Page 371 Installing Node.js on Linux......Page 372 Checking the Git Installation......Page 373 Installing .NET Core on Linux......Page 374 Installing Visual Studio Code on macOS......Page 375 Checking the Visual Studio Code Installation......Page 376 Creating an ASP.NET Core Project......Page 377 Preparing the Project with Visual Studio Code......Page 378 Managing Client-Side Packages......Page 379 Building and Running the Project......Page 381 Creating the Model and Repository......Page 382 Creating the Database......Page 386 Creating and Applying the Database Migration......Page 387 Creating the Controllers and Views......Page 388 Unit Testing in Visual Studio Code......Page 392 Running Tests......Page 393 Summary......Page 394 Part II: ASP.NET Core MVC 2 in Detail......Page 395 Chapter 14: Configuring Applications......Page 396 Preparing the Example Project......Page 397 Configuring the Project......Page 399 Adding Packages to the Project......Page 400 Adding Tools Packages to the Project......Page 402 Digging into the Configuration Detail......Page 403 Understanding the Startup Class......Page 407 Understanding ASP.NET Services......Page 409 Understanding the Built-In MVC Services......Page 411 Creating Content-Generating Middleware......Page 412 Using Services in Middleware......Page 414 Creating Short-Circuiting Middleware......Page 415 Creating Request-Editing Middleware......Page 417 Creating Response-Editing Middleware......Page 419 Understanding How the Configure Method Is Invoked......Page 421 Using the Application Builder......Page 422 Using the Hosting Environment......Page 423 Enabling Exception Handling......Page 426 Enabling Browser Link......Page 428 Enabling Static Content......Page 429 Configuring the Application......Page 430 Creating the JSON Configuration File......Page 432 Using Configuration Data......Page 434 Configuring Logging......Page 436 Understanding the Logging Configuration Data......Page 437 Creating Custom Log Messages......Page 439 Configuring Dependency Injection......Page 440 Configuring MVC Services......Page 441 Creating Different External Configuration Files......Page 443 Creating Different Configuration Methods......Page 445 Creating Different Configuration Classes......Page 446 Summary......Page 448 Chapter 15: URL Routing......Page 449 Preparing the Example Project......Page 450 Creating the Example Controllers......Page 451 Creating the View......Page 452 Introducing URL Patterns......Page 454 Creating and Registering a Simple Route......Page 455 Defining Default Values......Page 457 Defining Inline Default Values......Page 458 Using Static URL Segments......Page 460 Defining Custom Segment Variables......Page 465 Using Custom Variables as Action Method Parameters......Page 468 Defining Optional URL Segments......Page 469 Defining Variable-Length Routes......Page 471 Constraining Routes......Page 473 Constraining a Route Using a Regular Expression......Page 477 Using Type and Value Constraints......Page 478 Combining Constraints......Page 479 Defining a Custom Constraint......Page 481 Defining an Inline Custom Constraint......Page 482 Preparing for Attribute Routing......Page 483 Applying Attribute Routing......Page 484 Changing the Name of an Action Method......Page 485 Creating a More Complex Route......Page 486 Applying Route Constraints......Page 487 Summary......Page 488 Chapter 16: Advanced Routing Features......Page 489 Preparing the Example Project......Page 490 Generating Outgoing Links......Page 491 Targeting Other Controllers......Page 495 Passing Extra Values......Page 497 Generating Fully Qualified URLs......Page 499 Generating a URL from a Specific Route......Page 500 Generating URLs in Action Methods......Page 503 Changing the Routing System Configuration......Page 504 Creating a Custom Route Class......Page 506 Routing Incoming URLs......Page 507 Applying a Custom Route Class......Page 509 Routing to MVC Controllers......Page 510 Generating Outgoing URLs......Page 514 Creating an Area......Page 517 Creating an Area Route......Page 518 Populating an Area......Page 519 Generating Links to Actions in Areas......Page 522 Making Your URLs Clean and Human-Friendly......Page 523 GET and POST: Picking the Right One......Page 524 Summary......Page 525 Chapter 17: Controllers and Actions......Page 526 Preparing the Example Project......Page 527 Preparing the Views......Page 528 Understanding Controllers......Page 530 Creating POCO Controllers......Page 531 Using the MVC Controller API......Page 532 Using the Controller Base Class......Page 533 Getting Data from Context Objects......Page 535 Getting Context Data in a POCO Controller......Page 537 Using Action Method Parameters......Page 539 Producing a Response Using the Context Object......Page 541 Understanding Action Results......Page 543 Producing an HTML Response......Page 545 Understanding the Search for a View File......Page 547 Using a View Model Object......Page 549 Passing Data with the View Bag......Page 553 Performing Redirections......Page 554 Redirecting to a Literal URL......Page 555 Redirecting to a Routing System URL......Page 557 Redirecting to an Action Method......Page 558 Using the Post/Redirect/Get Pattern......Page 559 Using Temp Data......Page 560 Producing a JSON Response......Page 562 Using Objects to Generate Responses......Page 563 Responding with the Contents of Files......Page 564 Returning Errors and HTTP Codes......Page 566 Sending a Specific HTTP Result Code......Page 567 Understanding the Other Action Result Classes......Page 568 Summary......Page 569 Chapter 18: Dependency Injection......Page 570 Preparing the Example Project......Page 571 Creating the Model and Repository......Page 572 Creating the Controller and View......Page 573 Creating Loosely Coupled Components......Page 575 Examining Closely Coupled Components......Page 576 Decoupling Components for Unit Testing......Page 577 Using a Type Broker......Page 579 Preparing for Dependency Injection......Page 583 Configuring the Service Provider......Page 584 Unit Testing a Controller with a Dependency......Page 586 Using Dependency Chains......Page 587 Using Dependency Injection for Concrete Types......Page 589 Understanding Service Life Cycles......Page 592 Using the Transient Life Cycle......Page 593 Using a Factory Function......Page 595 Using the Scoped Life Cycle......Page 597 Using the Singleton Life Cycle......Page 599 Using Action Injection......Page 600 Manually Requesting an Implementation Object......Page 601 Summary......Page 602 Chapter 19: Filters......Page 603 Preparing the Example Project......Page 604 Creating the Controller and View......Page 605 Using Filters......Page 607 Understanding Filters......Page 610 Getting Context Data......Page 611 Creating an Authorization Filter......Page 612 Using Action Filters......Page 615 Creating an Action Filter......Page 616 Creating an Asynchronous Action Filter......Page 618 Using Result Filters......Page 619 Creating a Result Filter......Page 620 Creating an Asynchronous Result Filter......Page 622 Creating a Hybrid Action/Result Filter......Page 623 Using Exception Filters......Page 625 Creating an Exception Filter......Page 626 Resolving Filter Dependencies......Page 628 Creating Filters with Dependencies......Page 630 Applying the Filters......Page 631 Managing Filter Life Cycles......Page 633 Applying the Filter......Page 634 Creating Global Filters......Page 636 Understanding and Changing Filter Order......Page 638 Changing Filter Order......Page 640 Summary......Page 641 Chapter 20: API Controllers......Page 642 Creating the Model and Repository......Page 643 Creating the Controller and Views......Page 645 Setting the HTTP Port......Page 648 Understanding the Efficiency Problem......Page 649 Introducing REST and API Controllers......Page 650 Creating an API Controller......Page 651 Declaring Dependencies......Page 653 Defining the Action Methods......Page 654 Defining the Action Results......Page 655 Testing the GET Operations......Page 656 Testing the PUT Operation......Page 658 Testing the Patch Operation......Page 659 Using the API Controller in the Browser......Page 660 Understanding Content Formatting......Page 662 Understanding the Default Content Policy......Page 663 Understanding Content Negotiation......Page 664 Enabling XML Formatting......Page 665 Specifying an Action Data Format......Page 667 Getting the Data Format from the Route or Query String......Page 668 Enabling Full Content Negotiation......Page 670 Receiving Different Data Formats......Page 671 Summary......Page 672 Chapter 21: Views......Page 673 Preparing the Example Project......Page 674 Creating a Custom View Engine......Page 675 Creating a Custom IView......Page 677 Creating an IViewEngine Implementation......Page 678 Registering a Custom View Engine......Page 679 Testing the View Engine......Page 680 Working with the Razor Engine......Page 682 Preparing the Example Project......Page 683 Demystifying Razor Views......Page 685 Understanding the Base Class......Page 686 Understanding the View Rendering......Page 688 Using Layout Sections......Page 689 Rendering Optional Sections......Page 693 Applying a Partial View......Page 695 Using Strongly Typed Partial Views......Page 697 Adding JSON Content to Views......Page 698 Configuring Razor......Page 700 Understanding View Location Expanders......Page 701 Applying the View Location Expander......Page 702 Selecting Specific Views for Requests......Page 703 Summary......Page 706 Chapter 22: View Components......Page 707 Creating the Models and Repositories......Page 708 Creating the Controller and Views......Page 710 Configuring the Application......Page 713 Creating a View Component......Page 714 Creating POCO View Components......Page 715 Deriving from the ViewComponent Base Class......Page 716 Understanding View Component Results......Page 718 Returning a Partial View......Page 719 Returning HTML Fragments......Page 721 Getting Context Data......Page 723 Providing Context from the Parent View Using Arguments......Page 726 Creating Asynchronous View Components......Page 729 Creating Hybrid Controller/View Component Classes......Page 731 Creating the Hybrid Views......Page 732 Applying the Hybrid Class......Page 733 Summary......Page 735 Chapter 23: Understanding Tag Helpers......Page 736 Creating the Model and Repository......Page 737 Creating the Controller, Layout, and Views......Page 738 Configuring the Application......Page 741 Creating a Tag Helper......Page 742 Defining the Tag Helper Class......Page 743 Receiving Context Data......Page 744 Producing Output......Page 745 Registering Tag Helpers......Page 746 Using a Tag Helper......Page 747 Managing the Scope of a Tag Helper......Page 749 Narrowing the Scope of a Tag Helper......Page 750 Widening the Scope of a Tag Helper......Page 751 Creating Shorthand Elements......Page 754 Prepending and Appending Content and Elements......Page 756 Inserting Content Around the Output Element......Page 757 Inserting Content Inside the Output Element......Page 759 Getting View Context Data and Using Dependency Injection......Page 760 Working with the View Model......Page 762 Coordinating Between Tag Helpers......Page 765 Suppressing the Output Element......Page 767 Summary......Page 768 Chapter 24: Using the Form Tag Helpers......Page 769 Resetting the Views and Layout......Page 770 Working with Form Elements......Page 772 Setting the Form Target......Page 773 Using the Anti-forgery Feature......Page 774 Working with Input Elements......Page 776 Configuring Input Elements......Page 777 Formatting Data Values......Page 779 Applying Formatting via the Model Class......Page 781 Working with Label Elements......Page 782 Working with Select and Option Elements......Page 784 Generating Option Elements from an enum......Page 786 Generating Option Elements from the Model......Page 788 Using a Custom Tag Helper to Generate Option Elements from the Model......Page 789 Working with Text Areas......Page 791 Summary......Page 793 Chapter 25: Using the Other Built-in Tag Helpers......Page 794 Preparing the Example Project......Page 795 Using the Hosting Environment Tag Helper......Page 796 Managing JavaScript Files......Page 797 Selecting JavaScript Files......Page 798 Narrowing the Globbing Pattern......Page 801 Excluding Files......Page 802 Using the Hosting Environment to Select Files......Page 803 Working with Content Delivery Networks......Page 805 Managing CSS Stylesheets......Page 807 Selecting Stylesheets......Page 808 Working with Content Delivery Networks......Page 809 Working with Anchor Elements......Page 810 Working with Image Elements......Page 811 Using the Data Cache......Page 812 Setting Cache Expiry......Page 815 Setting a Fixed Expiry Point......Page 816 Using Cache Variations......Page 817 Using Application-Relative URLs......Page 819 Summary......Page 822 Chapter 26: Model Binding......Page 823 Creating the Model and Repository......Page 824 Creating the Controller and View......Page 826 Configuring the Application......Page 827 Understanding Model Binding......Page 829 Understanding Default Binding Values......Page 830 Binding Simple Types......Page 832 Binding Complex Types......Page 833 Creating Easily Bound HTML......Page 835 Specifying Custom Prefixes......Page 838 Selectively Binding Properties......Page 842 Binding to Arrays......Page 844 Binding to Collections......Page 846 Binding to Collections of Complex Types......Page 848 Specifying a Model Binding Source......Page 851 Selecting a Standard Binding Source......Page 852 Using Headers As Binding Sources......Page 853 Binding Complex Types from Headers......Page 855 Using Request Bodies as Binding Sources......Page 857 Summary......Page 859 Chapter 27: Model Validation......Page 860 Preparing the Example Project......Page 861 Creating the Controller......Page 862 Creating the Layout and Views......Page 863 Explicitly Validating a Model......Page 866 Displaying Validation Errors to the User......Page 869 Displaying Validation Messages......Page 871 Configuring the Default Validation Error Messages......Page 873 Displaying Property-Level Validation Messages......Page 875 Displaying Model-Level Messages......Page 877 Specifying Validation Rules Using Metadata......Page 880 Creating a Custom Property Validation Attribute......Page 883 Performing Client-Side Validation......Page 885 Performing Remote Validation......Page 888 Summary......Page 891 Chapter 28: Getting Started with Identity......Page 892 Preparing the Example Project......Page 893 Creating the Controller and View......Page 894 Creating the User Class......Page 896 Configuring the View Imports......Page 897 Configuring the Database Connection String Setting......Page 898 Enumerating User Accounts......Page 901 Creating Users......Page 904 Testing the Create Functionality......Page 906 Validating Passwords......Page 908 Implementing a Custom Password Validator......Page 910 Validating User Details......Page 915 Implementing Custom User Validation......Page 918 Implementing the Delete Feature......Page 921 Implementing the Edit Feature......Page 923 Creating the View......Page 926 Summary......Page 928 Preparing the Example Project......Page 929 Authenticating Users......Page 930 Preparing to Implement Authentication......Page 932 Adding User Authentication......Page 935 Testing Authentication......Page 937 Authorizing Users with Roles......Page 938 Creating and Deleting Roles......Page 939 Creating the Views......Page 941 Managing Role Memberships......Page 944 Testing and Editing Role Membership......Page 948 Using Roles for Authorization......Page 950 Seeding the Database......Page 953 Summary......Page 957 Preparing the Example Project......Page 958 Adding Custom User Properties......Page 960 Preparing for Database Migration......Page 963 Working with Claims and Policies......Page 964 Understanding Claims......Page 965 Creating Claims......Page 969 Using Policies......Page 973 Creating Custom Policy Requirements......Page 976 Using Policies to Authorize Access to Resources......Page 979 Creating the Resource Authorization Policy and Handler......Page 981 Enabling Google Authentication......Page 985 Summary......Page 990 Preparing the Example Project......Page 991 Creating the View Model, Controller, and View......Page 992 Using the Application Model and Model Conventions......Page 994 Understanding the Application Model......Page 995 Customizing the Application Model......Page 997 Understanding the Role of Model Conventions......Page 999 Creating a Model Convention......Page 1000 Using Conventions That Add or Remove Models......Page 1001 Understanding Model Convention Execution Order......Page 1005 Creating Global Model Conventions......Page 1006 Preparing the Example Project......Page 1008 Understanding Action Constraints......Page 1011 Creating an Action Constraint......Page 1012 Creating a Comparative Action Constraint......Page 1014 Resolving Dependencies in Action Constraints......Page 1016 Summary......Page 1019 Index......Page 1020
دانلود کتاب Pro ASP.NET Core MVC 2 : develop cloud-ready web applications using Microsoft's latest framework, ASP.NET Core MVC 2