Commit a97345443037c43d8daafe55be30d56fb478250d
1 parent
ca8eab62
Able to call service from controller.
Showing
24 changed files
with
401 additions
and
27 deletions
400-SOURCECODE/AIAHTML5.Web/AIAHTML5.Web.csproj
... | ... | @@ -41,6 +41,7 @@ |
41 | 41 | <Content Include="app\controllers\AuthenticationController.js" /> |
42 | 42 | <Content Include="app\main\AIA.js" /> |
43 | 43 | <Content Include="app\services\AuthenticationService.js" /> |
44 | + <Content Include="app\services\AuthInterceptor.js" /> | |
44 | 45 | <Content Include="content\css\main.css" /> |
45 | 46 | <Content Include="content\images\1.jpg" /> |
46 | 47 | <Content Include="content\images\1000x600.jpg" /> |
... | ... | @@ -299,6 +300,10 @@ |
299 | 300 | <SpecificVersion>False</SpecificVersion> |
300 | 301 | <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath> |
301 | 302 | </Reference> |
303 | + <Reference Include="System.Web.Cors, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | |
304 | + <SpecificVersion>False</SpecificVersion> | |
305 | + <HintPath>..\packages\Microsoft.AspNet.Cors.5.2.3\lib\net45\System.Web.Cors.dll</HintPath> | |
306 | + </Reference> | |
302 | 307 | <Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
303 | 308 | <SpecificVersion>False</SpecificVersion> |
304 | 309 | <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath> | ... | ... |
400-SOURCECODE/AIAHTML5.Web/Web.config
1 | -<?xml version="1.0" encoding="utf-8"?> | |
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | 2 | <!-- |
3 | 3 | For more information on how to configure your ASP.NET application, please visit |
4 | 4 | http://go.microsoft.com/fwlink/?LinkId=169433 |
... | ... | @@ -51,13 +51,13 @@ |
51 | 51 | <add value="default.aspx" /> |
52 | 52 | </files> |
53 | 53 | </defaultDocument> |
54 | - <handlers> | |
54 | + | |
55 | + <handlers> | |
55 | 56 | <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> |
56 | 57 | <remove name="OPTIONSVerbHandler" /> |
57 | 58 | <remove name="TRACEVerbHandler" /> |
58 | 59 | <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> |
59 | - </handlers> | |
60 | - </system.webServer> | |
60 | + </handlers></system.webServer> | |
61 | 61 | <runtime> |
62 | 62 | <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> |
63 | 63 | <dependentAssembly> | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/controllers/AuthenticationController.js
... | ... | @@ -11,13 +11,21 @@ |
11 | 11 | |
12 | 12 | alert('called controller'); |
13 | 13 | |
14 | - $scope.user = AuthenticationService.GetUserName({ id: 42 }); | |
15 | - $scope.user.$promise.then(function (data) { | |
16 | - $scope.user = data; | |
14 | + //$scope.user = AuthenticationService.GetUserName({ id: 42 }); | |
15 | + //$scope.user.$promise.then(function (data) { | |
16 | + // $scope.user = data; | |
17 | 17 | |
18 | - debugger; | |
19 | - alert('called webAPI' + $scope.user); | |
20 | - }); | |
18 | + // debugger; | |
19 | + // alert('called webAPI' + $scope.user); | |
20 | + //}); | |
21 | + | |
22 | + $scope.user = AuthenticationService.login(); | |
23 | + //$scope.user.$promise.then(function (data) { | |
24 | + // $scope.user = data; | |
25 | + | |
26 | + // debugger; | |
27 | + // alert('called webAPI' + $scope.user); | |
28 | + //}); | |
21 | 29 | } |
22 | 30 | |
23 | 31 | }]) | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js
... | ... | @@ -25,10 +25,12 @@ AIA.constant('pages', [ |
25 | 25 | ]); |
26 | 26 | |
27 | 27 | |
28 | -AIA.config(function ($routeProvider, pages, $locationProvider) { | |
28 | +AIA.config(function ($routeProvider, pages, $locationProvider,$httpProvider) { | |
29 | 29 | |
30 | 30 | $locationProvider.html5Mode(true); |
31 | 31 | |
32 | + //$httpProvider.interceptors.push("AuthInterceptor"); | |
33 | + | |
32 | 34 | for (var i = 0; i < pages.length; i++) { |
33 | 35 | if (pages[i].pageSlug != null) { |
34 | 36 | $routeProvider.when('/' + pages[i].pageSlug, | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/services/AuthenticationService.js
... | ... | @@ -19,18 +19,27 @@ |
19 | 19 | |
20 | 20 | // }}}); |
21 | 21 | |
22 | +//angular | |
23 | +//.module('AIA') | |
24 | +//.factory('AuthenticationService', ['$resource', function ($resource) { | |
25 | +// return $resource('http://localhost/AIA/API/User/:id', | |
26 | +// { id: '@id' }, { | |
27 | +// GetUserName: { | |
28 | +// method: 'GET', | |
29 | +// params: { id: '@id' }, | |
30 | +// isArray: false, | |
31 | + | |
32 | +// } | |
33 | + | |
34 | +// }); | |
35 | +//}]); | |
36 | + | |
22 | 37 | angular |
23 | 38 | .module('AIA') |
24 | 39 | .factory('AuthenticationService', ['$resource', function ($resource) { |
25 | - return $resource('http://localhost/AIA/API/User/:id', | |
26 | - { id: '@id' }, { | |
27 | - GetUserName: { | |
28 | - method: 'GET', | |
29 | - params: { id: '@id' }, | |
30 | - isArray: false, | |
31 | - | |
32 | - } | |
33 | - | |
34 | - }); | |
40 | + return { | |
41 | + login: function (userName, Password) { | |
42 | + alert('called service'); | |
43 | + } | |
44 | + } | |
35 | 45 | }]); |
36 | - | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/services/authInterceptor.js
0 → 100644
1 | +(function () { | |
2 | + | |
3 | + "use strict"; | |
4 | + | |
5 | + angular.module("AIA") | |
6 | + .factory("Authinterceptor", [ | |
7 | + "$window", function ($window) { | |
8 | + | |
9 | + var storage = $window.localStorage; | |
10 | + | |
11 | + return { | |
12 | + request: function(config) { | |
13 | + var token = storage.getItem("jwt_token"); | |
14 | + if (token) { | |
15 | + config.headers.Authorization = "Bearer" + " " + token; | |
16 | + } | |
17 | + return config; | |
18 | + }, | |
19 | + | |
20 | + response: function(response) { | |
21 | + return response; | |
22 | + } | |
23 | + }; | |
24 | + } | |
25 | + ]); | |
26 | +})(); | |
0 | 27 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.Web/packages.config
... | ... | @@ -2,4 +2,8 @@ |
2 | 2 | <packages> |
3 | 3 | <package id="AngularJS.Core" version="1.5.5" targetFramework="net45" /> |
4 | 4 | <package id="AngularJS.Resource" version="1.5.5" targetFramework="net45" /> |
5 | + <package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net45" /> | |
6 | + <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" /> | |
7 | + <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" /> | |
8 | + <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" /> | |
5 | 9 | </packages> |
6 | 10 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/AIAHTML5.API.csproj
... | ... | @@ -39,15 +39,24 @@ |
39 | 39 | <WarningLevel>4</WarningLevel> |
40 | 40 | </PropertyGroup> |
41 | 41 | <ItemGroup> |
42 | + <Reference Include="JWT"> | |
43 | + <HintPath>..\packages\JWT.1.3.4\lib\3.5\JWT.dll</HintPath> | |
44 | + </Reference> | |
42 | 45 | <Reference Include="Microsoft.CSharp" /> |
43 | 46 | <Reference Include="System" /> |
44 | 47 | <Reference Include="System.Data" /> |
45 | 48 | <Reference Include="System.Drawing" /> |
49 | + <Reference Include="System.Web.Cors"> | |
50 | + <HintPath>..\AIAHTML5.Web\bin\System.Web.Cors.dll</HintPath> | |
51 | + </Reference> | |
46 | 52 | <Reference Include="System.Web.Entity" /> |
47 | 53 | <Reference Include="System.Web.ApplicationServices" /> |
48 | 54 | <Reference Include="System.ComponentModel.DataAnnotations" /> |
49 | 55 | <Reference Include="System.Core" /> |
50 | 56 | <Reference Include="System.Data.DataSetExtensions" /> |
57 | + <Reference Include="System.Web.Http.Cors"> | |
58 | + <HintPath>..\AIAHTML5.Web\bin\System.Web.Http.Cors.dll</HintPath> | |
59 | + </Reference> | |
51 | 60 | <Reference Include="System.Xml.Linq" /> |
52 | 61 | <Reference Include="System.Web" /> |
53 | 62 | <Reference Include="System.Web.Abstractions" /> |
... | ... | @@ -147,6 +156,7 @@ |
147 | 156 | <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" /> |
148 | 157 | <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" /> |
149 | 158 | <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" /> |
159 | + <Compile Include="Controllers\AccountController.cs" /> | |
150 | 160 | <Compile Include="Controllers\HomeController.cs" /> |
151 | 161 | <Compile Include="Controllers\JsonContent.cs" /> |
152 | 162 | <Compile Include="Controllers\UserController.cs" /> |
... | ... | @@ -155,7 +165,12 @@ |
155 | 165 | <DependentUpon>Global.asax</DependentUpon> |
156 | 166 | </Compile> |
157 | 167 | <Compile Include="Models\RawJsonActionResult .cs" /> |
168 | + <Compile Include="Models\Role.cs" /> | |
169 | + <Compile Include="Models\test.cs" /> | |
170 | + <Compile Include="Models\User.cs" /> | |
171 | + <Compile Include="Models\UserRole.cs" /> | |
158 | 172 | <Compile Include="Properties\AssemblyInfo.cs" /> |
173 | + <Compile Include="ViewModels\LoginViewModel.cs" /> | |
159 | 174 | </ItemGroup> |
160 | 175 | <ItemGroup> |
161 | 176 | <Content Include="Areas\HelpPage\HelpPage.css" /> | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/App_Start/WebApiConfig.cs
... | ... | @@ -5,6 +5,7 @@ using System.Linq; |
5 | 5 | using System.Net.Http.Formatting; |
6 | 6 | using System.Net.Http.Headers; |
7 | 7 | using System.Web.Http; |
8 | +using System.Web.Http.Cors; | |
8 | 9 | |
9 | 10 | namespace AIAHTML5.API |
10 | 11 | { |
... | ... | @@ -13,7 +14,8 @@ namespace AIAHTML5.API |
13 | 14 | public static void Register(HttpConfiguration config) |
14 | 15 | { |
15 | 16 | // Web API configuration and services |
16 | - | |
17 | + var cors = new EnableCorsAttribute("*", "*", "*"); | |
18 | + config.EnableCors(cors); | |
17 | 19 | // Web API routes |
18 | 20 | config.MapHttpAttributeRoutes(); |
19 | 21 | |
... | ... | @@ -23,7 +25,7 @@ namespace AIAHTML5.API |
23 | 25 | defaults: new { id = RouteParameter.Optional } |
24 | 26 | ); |
25 | 27 | |
26 | - // config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); | |
28 | + config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); | |
27 | 29 | } |
28 | 30 | } |
29 | 31 | } | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/Controllers/AccountController.cs
0 → 100644
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Net; | |
5 | +using System.Net.Http; | |
6 | +using System.Security.Cryptography; | |
7 | +using System.Text; | |
8 | +using System.Web.Http; | |
9 | +using AIAHTML5.WebAPI.Models; | |
10 | +using AIAHTML5.WebAPI.ViewModels; | |
11 | +using JWT; | |
12 | + | |
13 | + | |
14 | +namespace AIAHTML5.WebAPI.Controllers | |
15 | +{ | |
16 | + public class AccountController : ApiController | |
17 | + { | |
18 | + | |
19 | + [AllowAnonymous] | |
20 | + [Route("api/signin")] | |
21 | + [HttpPost] | |
22 | + public HttpResponseMessage Login(LoginViewModel model) | |
23 | + { | |
24 | + var loginSuccess = false; | |
25 | + User userObj = new User(); | |
26 | + userObj.Email = "amrita.vishnoi@ebix.com"; | |
27 | + userObj.Id = 1; | |
28 | + | |
29 | + HttpResponseMessage response = null; | |
30 | + if (ModelState.IsValid) | |
31 | + { | |
32 | + if (model.Email == userObj.Email && model.Password == "education") | |
33 | + { | |
34 | + loginSuccess = true; | |
35 | + } | |
36 | + else | |
37 | + { | |
38 | + loginSuccess = false; | |
39 | + } | |
40 | + | |
41 | + if (loginSuccess) | |
42 | + { | |
43 | + object dbUser; | |
44 | + var token = CreateToken(userObj, out dbUser); | |
45 | + response = Request.CreateResponse(new { dbUser, token }); | |
46 | + } | |
47 | + } | |
48 | + | |
49 | + else | |
50 | + { | |
51 | + response = Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); | |
52 | + } | |
53 | + return response; | |
54 | + } | |
55 | + | |
56 | + //[AllowAnonymous] | |
57 | + //[Route("signup")] | |
58 | + //[HttpPost] | |
59 | + //public HttpResponseMessage Register(RegisterViewModel model) | |
60 | + //{ | |
61 | + // HttpResponseMessage response; | |
62 | + // if (ModelState.IsValid) | |
63 | + // { | |
64 | + // var existingUser = db.Users.FirstOrDefault(u => u.Email == model.Email); | |
65 | + // if (existingUser != null) | |
66 | + // { | |
67 | + // return Request.CreateResponse(HttpStatusCode.BadRequest, "User already exist."); | |
68 | + // } | |
69 | + | |
70 | + // //Create user and save to database | |
71 | + // //var user = CreateUser(model); | |
72 | + | |
73 | + // object dbUser; | |
74 | + | |
75 | + // //Create token | |
76 | + // var token = CreateToken(user, out dbUser); | |
77 | + | |
78 | + // response = Request.CreateResponse(new { dbUser, token }); | |
79 | + // } | |
80 | + // else | |
81 | + // { | |
82 | + // response = Request.CreateResponse(HttpStatusCode.BadRequest, new { success = false }); | |
83 | + // } | |
84 | + | |
85 | + // return response; | |
86 | + //} | |
87 | + | |
88 | + /// <summary> | |
89 | + /// Create a Jwt with user information | |
90 | + /// </summary> | |
91 | + /// <param name="user"></param> | |
92 | + /// <param name="dbUser"></param> | |
93 | + /// <returns></returns> | |
94 | + private static string CreateToken(User user, out object dbUser) | |
95 | + { | |
96 | + var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); | |
97 | + var expiry = Math.Round((DateTime.UtcNow.AddHours(2) - unixEpoch).TotalSeconds); | |
98 | + var issuedAt = Math.Round((DateTime.UtcNow - unixEpoch).TotalSeconds); | |
99 | + var notBefore = Math.Round((DateTime.UtcNow.AddMonths(6) - unixEpoch).TotalSeconds); | |
100 | + | |
101 | + | |
102 | + var payload = new Dictionary<string, object> | |
103 | + { | |
104 | + {"email", user.Email}, | |
105 | + {"userId", user.Id}, | |
106 | + {"role", "Admin" }, | |
107 | + {"sub", user.Id}, | |
108 | + {"nbf", notBefore}, | |
109 | + {"iat", issuedAt}, | |
110 | + {"exp", expiry} | |
111 | + }; | |
112 | + | |
113 | + //var secret = ConfigurationManager.AppSettings.Get("jwtKey"); | |
114 | + const string apikey = "secretKey"; | |
115 | + | |
116 | + var token = JsonWebToken.Encode(payload, apikey, JwtHashAlgorithm.HS256); | |
117 | + | |
118 | + dbUser = new { user.Email, user.Id }; | |
119 | + return token; | |
120 | + } | |
121 | + | |
122 | + /// <summary> | |
123 | + /// Create a new user and saves it to the database | |
124 | + /// </summary> | |
125 | + /// <param name="registerDetails"></param> | |
126 | + /// <returns></returns> | |
127 | + //private User CreateUser(RegisterViewModel registerDetails) | |
128 | + //{ | |
129 | + // var passwordSalt = CreateSalt(); | |
130 | + // var user = new User | |
131 | + // { | |
132 | + // Salt = passwordSalt, | |
133 | + // Email = registerDetails.Email, | |
134 | + // PasswordHash = EncryptPassword(registerDetails.Password, passwordSalt) | |
135 | + // }; | |
136 | + | |
137 | + // var adminRole = db.Roles.FirstOrDefault(d => d.Name == "Admin"); | |
138 | + | |
139 | + // user.Roles.Add(new UserRole | |
140 | + // { | |
141 | + // User = user, | |
142 | + // Role = adminRole | |
143 | + // }); | |
144 | + | |
145 | + // db.Users.Add(user); | |
146 | + // db.SaveChanges(); | |
147 | + | |
148 | + // return user; | |
149 | + //} | |
150 | + | |
151 | + | |
152 | + /// <summary> | |
153 | + /// Creates a random salt to be used for encrypting a password | |
154 | + /// </summary> | |
155 | + /// <returns></returns> | |
156 | + public static string CreateSalt() | |
157 | + { | |
158 | + var data = new byte[0x10]; | |
159 | + using (var cryptoServiceProvider = new RNGCryptoServiceProvider()) | |
160 | + { | |
161 | + cryptoServiceProvider.GetBytes(data); | |
162 | + return Convert.ToBase64String(data); | |
163 | + } | |
164 | + } | |
165 | + | |
166 | + /// <summary> | |
167 | + /// Encrypts a password using the given salt | |
168 | + /// </summary> | |
169 | + /// <param name="password"></param> | |
170 | + /// <param name="salt"></param> | |
171 | + /// <returns></returns> | |
172 | + public static string EncryptPassword(string password, string salt) | |
173 | + { | |
174 | + using (var sha256 = SHA256.Create()) | |
175 | + { | |
176 | + var saltedPassword = string.Format("{0}{1}", salt, password); | |
177 | + var saltedPasswordAsBytes = Encoding.UTF8.GetBytes(saltedPassword); | |
178 | + return Convert.ToBase64String(sha256.ComputeHash(saltedPasswordAsBytes)); | |
179 | + } | |
180 | + } | |
181 | + | |
182 | + //protected override void Dispose(bool disposing) | |
183 | + //{ | |
184 | + // if (disposing) | |
185 | + // { | |
186 | + // db.Dispose(); | |
187 | + // } | |
188 | + // base.Dispose(disposing); | |
189 | + //} | |
190 | + } | |
191 | +} | |
0 | 192 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/Models/Role.cs
0 → 100644
1 | +using System.Collections.Generic; | |
2 | + | |
3 | +namespace AIAHTML5.WebAPI.Models | |
4 | +{ | |
5 | + public class Role | |
6 | + { | |
7 | + public Role() | |
8 | + { | |
9 | + Users = new List<UserRole>(); | |
10 | + } | |
11 | + public int Id { get; set; } | |
12 | + public string Name { get; set; } | |
13 | + | |
14 | + public virtual ICollection<UserRole> Users { get; set; } | |
15 | + } | |
16 | +} | |
0 | 17 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/Models/User.cs
0 → 100644
1 | +using System.Collections.Generic; | |
2 | + | |
3 | +namespace AIAHTML5.WebAPI.Models | |
4 | +{ | |
5 | + public class User | |
6 | + { | |
7 | + public User() | |
8 | + { | |
9 | + Roles = new List<UserRole>(); | |
10 | + } | |
11 | + public int Id { get; set; } | |
12 | + public string Email { get; set; } | |
13 | + public string PasswordHash { get; set; } | |
14 | + public string Salt { get; set; } | |
15 | + | |
16 | + public virtual ICollection<UserRole> Roles { get; set; } | |
17 | + } | |
18 | +} | |
0 | 19 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/Models/UserRole.cs
0 → 100644
1 | +namespace AIAHTML5.WebAPI.Models | |
2 | +{ | |
3 | + public class UserRole | |
4 | + { | |
5 | + public int Id { get; set; } | |
6 | + public int RoleId { get; set; } | |
7 | + public int UserId { get; set; } | |
8 | + | |
9 | + public virtual User User { get; set; } | |
10 | + public virtual Role Role { get; set; } | |
11 | + } | |
12 | +} | |
0 | 13 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/Models/test.cs
0 → 100644
400-SOURCECODE/AIAHTML5.WebAPI/ViewModels/LoginViewModel.cs
0 → 100644
1 | +using System.ComponentModel.DataAnnotations; | |
2 | + | |
3 | +namespace AIAHTML5.WebAPI.ViewModels | |
4 | +{ | |
5 | + public class LoginViewModel | |
6 | + { | |
7 | + [Required] | |
8 | + [Display(Name = "Email")] | |
9 | + [EmailAddress] | |
10 | + public string Email { get; set; } | |
11 | + | |
12 | + [Required] | |
13 | + [DataType(DataType.Password)] | |
14 | + [Display(Name = "Password")] | |
15 | + public string Password { get; set; } | |
16 | + | |
17 | + [Display(Name = "Remember me?")] | |
18 | + public bool RememberMe { get; set; } | |
19 | + } | |
20 | +} | |
0 | 21 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/Web.config
... | ... | @@ -34,7 +34,7 @@ |
34 | 34 | </dependentAssembly> |
35 | 35 | <dependentAssembly> |
36 | 36 | <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" /> |
37 | - <bindingRedirect oldVersion="1.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> | |
37 | + <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> | |
38 | 38 | </dependentAssembly> |
39 | 39 | <dependentAssembly> |
40 | 40 | <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> | ... | ... |
400-SOURCECODE/AIAHTML5.WebAPI/packages.config
... | ... | @@ -3,6 +3,7 @@ |
3 | 3 | <package id="Antlr" version="3.4.1.9004" targetFramework="net45" /> |
4 | 4 | <package id="bootstrap" version="3.0.0" targetFramework="net45" /> |
5 | 5 | <package id="jQuery" version="1.10.2" targetFramework="net45" /> |
6 | + <package id="JWT" version="1.3.4" targetFramework="net45" /> | |
6 | 7 | <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" /> |
7 | 8 | <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net45" /> |
8 | 9 | <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" /> | ... | ... |
400-SOURCECODE/packages/JWT.1.3.4/JWT.1.3.4.nupkg
0 → 100644
No preview for this file type
400-SOURCECODE/packages/JWT.1.3.4/JWT.1.3.4.nuspec
0 → 100644
1 | +<?xml version="1.0"?> | |
2 | +<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | |
3 | + <metadata> | |
4 | + <id>JWT</id> | |
5 | + <version>1.3.4</version> | |
6 | + <title>JWT</title> | |
7 | + <authors>John Sheehan, Michael Lehenbauer</authors> | |
8 | + <owners>John Sheehan, Michael Lehenbauer</owners> | |
9 | + <projectUrl>http://github.com/johnsheehan/jwt</projectUrl> | |
10 | + <requireLicenseAcceptance>false</requireLicenseAcceptance> | |
11 | + <description>JWT (JSON Web Token) Implementation for .NET (Public Domain)</description> | |
12 | + <summary /> | |
13 | + <language>en-US</language> | |
14 | + <tags>jwt json</tags> | |
15 | + </metadata> | |
16 | +</package> | |
0 | 17 | \ No newline at end of file | ... | ... |
400-SOURCECODE/packages/JWT.1.3.4/lib/3.5/JWT.dll
0 → 100644
No preview for this file type
400-SOURCECODE/packages/Microsoft.AspNet.Cors.5.2.3/Microsoft.AspNet.Cors.5.2.3.nupkg
0 → 100644
No preview for this file type
400-SOURCECODE/packages/Microsoft.AspNet.Cors.5.2.3/Microsoft.AspNet.Cors.5.2.3.nuspec
0 → 100644
1 | +<?xml version="1.0"?> | |
2 | +<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> | |
3 | + <metadata> | |
4 | + <id>Microsoft.AspNet.Cors</id> | |
5 | + <version>5.2.3</version> | |
6 | + <title>Microsoft ASP.NET Cross-Origin Support</title> | |
7 | + <authors>Microsoft</authors> | |
8 | + <owners>Microsoft</owners> | |
9 | + <licenseUrl>http://www.microsoft.com/web/webpi/eula/net_library_eula_ENU.htm</licenseUrl> | |
10 | + <projectUrl>http://www.asp.net/web-api</projectUrl> | |
11 | + <iconUrl>http://go.microsoft.com/fwlink/?LinkID=288859</iconUrl> | |
12 | + <requireLicenseAcceptance>true</requireLicenseAcceptance> | |
13 | + <description>This package contains the core components to enable Cross-Origin Resource Sharing (CORS) in ASP.NET.</description> | |
14 | + <summary>This package contains the core components to enable Cross-Origin Resource Sharing (CORS) in ASP.NET.</summary> | |
15 | + <releaseNotes>Please visit http://go.microsoft.com/fwlink/?LinkID=403010 to view the release notes.</releaseNotes> | |
16 | + <copyright>© Microsoft Corporation. All rights reserved.</copyright> | |
17 | + <language>en-US</language> | |
18 | + <tags>Microsoft AspNet Cors Cross Origin</tags> | |
19 | + </metadata> | |
20 | +</package> | |
0 | 21 | \ No newline at end of file | ... | ... |
400-SOURCECODE/packages/Microsoft.AspNet.Cors.5.2.3/lib/net45/System.Web.Cors.dll
0 → 100644
No preview for this file type
400-SOURCECODE/packages/repositories.config
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | 2 | <repositories> |
3 | - <repository path="..\AIAHTML5.API\packages.config" /> | |
4 | 3 | <repository path="..\AIAHTML5.Web\packages.config" /> |
5 | 4 | <repository path="..\AIAHTML5.WebAPI\packages.config" /> |
6 | - <repository path="..\AIAHTML5API\packages.config" /> | |
7 | 5 | <repository path="..\WebApplication1\packages.config" /> |
8 | 6 | </repositories> |
9 | 7 | \ No newline at end of file | ... | ... |