Latest Posts

Sunday, August 2, 2015

Angular Js Server Side And Client Side Authentication for web api

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Example - example-$route-service-production</title>

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular-route.js"></script>
    <script>


        var app = angular.module('ngRouteExample', ['ngRoute']);

        app.factory('rootingfact', function ($http, $q) {
            return {
                getPerson: function (entity) {
                    var deferred = $q.defer();
                    $http.get('/api/Home/getvalue', {
                        // params: { op: 'get' },
                        headers: { "AUTH_TOKEN": entity.token }
                    }).success(function (data) {
                        deferred.resolve({
                            title: data.title,
                            cost: data.price
                        });
                    }).error(function (msg, code) {
                        deferred.reject(msg);
                        $log.error(msg, code);
                    });
                    return deferred.promise;
                }
            }
        });
        app.controller('RootControllerCreate', function ($scope, $http, rootingfact) {

            rootingfact.getPerson($scope.entity).then(
                      function (result) {
                          alert('authorized');
                      },
                      function (error) {
                          alert('error');
                      }
                  );
        });

        app.controller('RootControllerDetail', function ($scope) {




        });

        app.controller('RootControllerUpdate', function ($scope) {





        });

        app.config(function ($routeProvider, $locationProvider) {
            $routeProvider
             .when('/Routing/Detail', {
                 templateUrl: 'Routing/Detail',
                 controller: 'RootControllerDetail'
             })
            .when('/Routing/Create', {
                templateUrl: 'Routing/Create',
                controller: 'RootControllerCreate'
            })
           .when('/Routing/Update', {
               templateUrl: 'Routing/Update',
               controller: 'RootControllerUpdate'
           })
            .otherwise({
                redirectTo: '/'
            });

            // configure html5 to get links working on jsfiddle
            // $locationProvider.html5Mode(true);
        });

        app.run(function ($rootScope, $location) {
            $rootScope.$on("$routeChangeStart", function (args) {
                var path = $location.path().split('/');
                $rootScope.entity = {};
                /* $rootScope.entity.ctrl = path[1];
                 $rootScope.entity.action = path[2];*/
                $rootScope.entity.token = "124_sdfssdfsdfsdf_" + path[1] + "_" + path[2];
            })
            //$rootScope.$on("$routeChangeSuccess"....

            //$rootScope.$on("$routeChangeError"....
        });

    </script>

</head>
<body ng-app="ngRouteExample">
    Choose:
    <a href="/#/Routing/Create">Create</a> |
    <a href="/#/Routing/Detail">Detail</a> |
    <a href="/#/Routing/Update">Update</a> |
    <div ng-view></div>

</body>
</html>





  public class Global : HttpApplication
    {
        void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            RouteConfig.RegisterRoutes(RouteTable.Routes);            
        }
        void Application_BeginRequest(object sender, EventArgs e)
        {
            var context = HttpContext.Current;
            var request = context.Request;
            string url = request.Url.LocalPath;
            if (url.IndexOf("api/") != -1)
            {
                IEnumerable<string> headerValues = request.Headers.GetValues("AUTH_TOKEN");
                if (headerValues != null)
                {
                    string[] token = headerValues.ToArray();
                    string[] all = token[0].Split('_');
                    // var dbId = dbContext.abc.FirstOrDefault(x => x.token == token);
                    if ("sdfssdfsdfsdf" != all[1])
                    {
                        throw new Exception("User now exists");
                    }

                }
                else
                {
                    throw new Exception("Error");
                }
            }


        }
    }



  public class test
    {
        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public string name { get; set; }
        public decimal? allowance { get; set; }
        public bool paid { get; set; }
    }
    public class abc
    {
        public int id { get; set; }
        public string token { get; set; }
    }
    public class context : DbContext
    {
        public DbSet<abc> abc { get; set; }
    }
 
    public class HomeController : ApiController
    {
     



        [HttpGet]
        public HttpResponseMessage getvalue()
        {
            string abc = "";


            return new HttpResponseMessage
            {
                Content = new StringContent(abc,
                                       System.Text.Encoding.UTF8, "application/json")
            };
        }

    }