Header Ads

ASP.NET MVC5: Role Base Accessibility

Role base accessibility is another integral part of web development because it provides encapsulation for designated information accessibility to designated credential.
Microsoft MVC paradigm provides a very simple and effective mechanism to achieve role base accessibility. So, for today's discussion, I will be demonstrating role base accessibility using ASP.NET MVC5 technology.


Following are some prerequisites before you proceed any further in this tutorial:

Prerequisites: 

1) Knowledge about ASP.NET MVC5.  
2) Knowledge about ADO.NET.
3) Knowledge about entity framework.
4) Knowledge about OWIN.
5) Knowledge about Claim Base Identity Model.
6) Knowledge about C# programming.
7) Knowledge about C# LINQ.

You can download the complete source code for this tutorial or you can follow the step by step discussion below. The sample code is developed in Microsoft Visual Studio 2013 Ultimate. I am using SQL Server 2008 as database.

Download Now!

Let's Begin now.

1) First you need to create a sample database with "Login" & "Role" tables, I am using following scripts to generate my sample database. My database name is "RoleBaseAccessibility", below is the snippet for it:


USE [RoleBaseAccessibility]  
 GO  
 /****** Object: ForeignKey [R_10]  Script Date: 04/30/2016 16:32:55 ******/  
 IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[R_10]') AND parent_object_id = OBJECT_ID(N'[dbo].[Login]'))  
 ALTER TABLE [dbo].[Login] DROP CONSTRAINT [R_10]  
 GO  
 /****** Object: StoredProcedure [dbo].[LoginByUsernamePassword]  Script Date: 04/30/2016 16:32:59 ******/  
 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[LoginByUsernamePassword]') AND type in (N'P', N'PC'))  
 DROP PROCEDURE [dbo].[LoginByUsernamePassword]  
 GO  
 /****** Object: Table [dbo].[Login]  Script Date: 04/30/2016 16:32:55 ******/  
 IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[R_10]') AND parent_object_id = OBJECT_ID(N'[dbo].[Login]'))  
 ALTER TABLE [dbo].[Login] DROP CONSTRAINT [R_10]  
 GO  
 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Login]') AND type in (N'U'))  
 DROP TABLE [dbo].[Login]  
 GO  
 /****** Object: Table [dbo].[Role]  Script Date: 04/30/2016 16:32:55 ******/  
 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Role]') AND type in (N'U'))  
 DROP TABLE [dbo].[Role]  
 GO  
 /****** Object: Table [dbo].[Role]  Script Date: 04/30/2016 16:32:55 ******/  
 SET ANSI_NULLS ON  
 GO  
 SET QUOTED_IDENTIFIER ON  
 GO  
 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Role]') AND type in (N'U'))  
 BEGIN  
 CREATE TABLE [dbo].[Role](  
      [role_id] [int] IDENTITY(1,1) NOT NULL,  
      [role] [nvarchar](max) NOT NULL,  
  CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED   
 (  
      [role_id] ASC  
 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
 ) ON [PRIMARY]  
 END  
 GO  
 SET IDENTITY_INSERT [dbo].[Role] ON  
 INSERT [dbo].[Role] ([role_id], [role]) VALUES (1, N'Admin')  
 INSERT [dbo].[Role] ([role_id], [role]) VALUES (2, N'User')  
 SET IDENTITY_INSERT [dbo].[Role] OFF  
 /****** Object: Table [dbo].[Login]  Script Date: 04/30/2016 16:32:55 ******/  
 SET ANSI_NULLS ON  
 GO  
 SET QUOTED_IDENTIFIER ON  
 GO  
 SET ANSI_PADDING ON  
 GO  
 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Login]') AND type in (N'U'))  
 BEGIN  
 CREATE TABLE [dbo].[Login](  
      [id] [int] IDENTITY(1,1) NOT NULL,  
      [username] [varchar](50) NOT NULL,  
      [password] [varchar](50) NOT NULL,  
      [role_id] [int] NOT NULL,  
  CONSTRAINT [PK_Login] PRIMARY KEY CLUSTERED   
 (  
      [id] ASC  
 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
 ) ON [PRIMARY]  
 END  
 GO  
 SET ANSI_PADDING OFF  
 GO  
 SET IDENTITY_INSERT [dbo].[Login] ON  
 INSERT [dbo].[Login] ([id], [username], [password], [role_id]) VALUES (1, N'admin', N'admin', 1)  
 INSERT [dbo].[Login] ([id], [username], [password], [role_id]) VALUES (2, N'user', N'user', 2)  
 SET IDENTITY_INSERT [dbo].[Login] OFF  
 /****** Object: StoredProcedure [dbo].[LoginByUsernamePassword]  Script Date: 04/30/2016 16:32:59 ******/  
 SET ANSI_NULLS ON  
 GO  
 SET QUOTED_IDENTIFIER ON  
 GO  
 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[LoginByUsernamePassword]') AND type in (N'P', N'PC'))  
 BEGIN  
 EXEC dbo.sp_executesql @statement = N'-- =============================================  
 -- Author:          <Author,,Name>  
 -- Create date: <Create Date,,>  
 -- Description:     <Description,,>  
 -- =============================================  
 CREATE PROCEDURE [dbo].[LoginByUsernamePassword]   
      @username varchar(50),  
      @password varchar(50)  
 AS  
 BEGIN  
      SELECT id, username, password, role_id  
      FROM Login  
      WHERE username = @username  
      AND password = @password  
 END  
 '   
 END  
 GO  
 /****** Object: ForeignKey [R_10]  Script Date: 04/30/2016 16:32:55 ******/  
 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[R_10]') AND parent_object_id = OBJECT_ID(N'[dbo].[Login]'))  
 ALTER TABLE [dbo].[Login] WITH CHECK ADD CONSTRAINT [R_10] FOREIGN KEY([role_id])  
 REFERENCES [dbo].[Role] ([role_id])  
 ON UPDATE CASCADE  
 ON DELETE CASCADE  
 GO  
 IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[R_10]') AND parent_object_id = OBJECT_ID(N'[dbo].[Login]'))  
 ALTER TABLE [dbo].[Login] CHECK CONSTRAINT [R_10]  
 GO  

Here I have created a simple login & role tables with sample data and a store procedure to retrieve the data.

2) Create new visual studio web MVC project and name it "RoleBaseAccessibility".  
3) You need to create database connectivity using "Entity Framework Database First Approach". You can visit here for details.  
4) You also need to create basic "Login" interface, I am not going to show you how you can create a basic login application by using Claim Base Identity Model. You can either download source code for this tutorial or you can go through detail tutorial here for better understanding.  
5) Now, open "App_Start->Startup.Auth.cs" file and replace it with following code:
 
using Microsoft.AspNet.Identity;  
 using Microsoft.AspNet.Identity.EntityFramework;  
 using Microsoft.AspNet.Identity.Owin;  
 using Microsoft.Owin;  
 using Microsoft.Owin.Security.Cookies;  
 using Microsoft.Owin.Security.DataProtection;  
 using Microsoft.Owin.Security.Google;  
 using Owin;  
 using System;  
 using RoleBaseAccessibility.Models;  
 namespace RoleBaseAccessibility  
 {  
   public partial class Startup  
   {  
     // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864  
     public void ConfigureAuth(IAppBuilder app)  
     {  
       // Enable the application to use a cookie to store information for the signed in user  
       // and to use a cookie to temporarily store information about a user logging in with a third party login provider  
       // Configure the sign in cookie  
       app.UseCookieAuthentication(new CookieAuthenticationOptions  
       {  
         AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,  
         LoginPath = new PathString("/Account/Login"),  
         LogoutPath = new PathString("/Account/LogOff"),  
         ExpireTimeSpan = TimeSpan.FromMinutes(5.0),  
         ReturnUrlParameter = "/Home/Index"  
       });  
       app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);  
       // Uncomment the following lines to enable logging in with third party login providers  
       //app.UseMicrosoftAccountAuthentication(  
       //  clientId: "",  
       //  clientSecret: "");  
       //app.UseTwitterAuthentication(  
       //  consumerKey: "",  
       //  consumerSecret: "");  
       //app.UseFacebookAuthentication(  
       //  appId: "",  
       //  appSecret: "");  
       //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()  
       //{  
       //  ClientId = "",  
       //  ClientSecret = ""  
       //});  
     }  
   }  
 }  

In above code following line of code will redirect the user to home page if he/she tries to access a link which is not authorized to him/her:


ReturnUrlParameter = "/Home/Index"

6) Create new controller, name it "AccountController.cs" under "Controller" folder and replace it with following code:


//-----------------------------------------------------------------------  
 // <copyright file="AccountController.cs" company="None">  
 //   Copyright (c) Allow to distribute this code.  
 // </copyright>  
 // <author>Asma Khalid</author>  
 //-----------------------------------------------------------------------  
 namespace RoleBaseAccessibility.Controllers  
 {  
   using System;  
   using System.Collections.Generic;  
   using System.Linq;  
   using System.Security.Claims;  
   using System.Web;  
   using System.Web.Mvc;  
   using Microsoft.AspNet.Identity;  
   using Microsoft.Owin.Security;  
   using RoleBaseAccessibility.Models;  
   /// <summary>  
   /// Account controller class.  
   /// </summary>  
   public class AccountController : Controller  
   {  
     #region Private Properties  
     /// <summary>  
     /// Database Store property.  
     /// </summary>  
     private RoleBaseAccessibilityEntities databaseManager = new RoleBaseAccessibilityEntities();  
     #endregion  
     #region Default Constructor  
     /// <summary>  
     /// Initializes a new instance of the <see cref="AccountController" /> class.  
     /// </summary>  
     public AccountController()  
     {  
     }  
     #endregion  
     #region Login methods  
     /// <summary>  
     /// GET: /Account/Login  
     /// </summary>  
     /// <param name="returnUrl">Return URL parameter</param>  
     /// <returns>Return login view</returns>  
     [AllowAnonymous]  
     public ActionResult Login(string returnUrl)  
     {  
       try  
       {  
         // Verification.  
         if (this.Request.IsAuthenticated)  
         {  
           // Info.  
           return this.RedirectToLocal(returnUrl);  
         }  
       }  
       catch (Exception ex)  
       {  
         // Info  
         Console.Write(ex);  
       }  
       // Info.  
       return this.View();  
     }  
     /// <summary>  
     /// POST: /Account/Login  
     /// </summary>  
     /// <param name="model">Model parameter</param>  
     /// <param name="returnUrl">Return URL parameter</param>  
     /// <returns>Return login view</returns>  
     [HttpPost]  
     [AllowAnonymous]  
     [ValidateAntiForgeryToken]  
     public ActionResult Login(LoginViewModel model, string returnUrl)  
     {  
       try  
       {  
         // Verification.  
         if (ModelState.IsValid)  
         {  
           // Initialization.  
           var loginInfo = this.databaseManager.LoginByUsernamePassword(model.Username, model.Password).ToList();  
           // Verification.  
           if (loginInfo != null && loginInfo.Count() > 0)  
           {  
             // Initialization.  
             var logindetails = loginInfo.First();  
             // Login In.  
             this.SignInUser(logindetails.username, logindetails.role_id, false);  
             // setting.  
             this.Session["role_id"] = logindetails.role_id;  
             // Info.  
             return this.RedirectToLocal(returnUrl);  
           }  
           else  
           {  
             // Setting.  
             ModelState.AddModelError(string.Empty, "Invalid username or password.");  
           }  
         }  
       }  
       catch (Exception ex)  
       {  
         // Info  
         Console.Write(ex);  
       }  
       // If we got this far, something failed, redisplay form  
       return this.View(model);  
     }  
     #endregion  
     #region Log Out method.  
     /// <summary>  
     /// POST: /Account/LogOff  
     /// </summary>  
     /// <returns>Return log off action</returns>  
     [HttpPost]  
     [ValidateAntiForgeryToken]  
     public ActionResult LogOff()  
     {  
       try  
       {  
         // Setting.  
         var ctx = Request.GetOwinContext();  
         var authenticationManager = ctx.Authentication;  
         // Sign Out.  
         authenticationManager.SignOut();  
       }  
       catch (Exception ex)  
       {  
         // Info  
         throw ex;  
       }  
       // Info.  
       return this.RedirectToAction("Login", "Account");  
     }  
     #endregion  
     #region Helpers  
     #region Sign In method.  
     /// <summary>  
     /// Sign In User method.  
     /// </summary>  
     /// <param name="username">Username parameter.</param>  
     /// <param name="role_id">Role ID parameter</param>  
     /// <param name="isPersistent">Is persistent parameter.</param>  
     private void SignInUser(string username, int role_id, bool isPersistent)  
     {  
       // Initialization.  
       var claims = new List<Claim>();  
       try  
       {  
         // Setting  
         claims.Add(new Claim(ClaimTypes.Name, username));  
         claims.Add(new Claim(ClaimTypes.Role, role_id.ToString()));  
         var claimIdenties = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);  
         var ctx = Request.GetOwinContext();  
         var authenticationManager = ctx.Authentication;  
         // Sign In.  
         authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, claimIdenties);  
       }  
       catch (Exception ex)  
       {  
         // Info  
         throw ex;  
       }  
     }  
     #endregion  
     #region Redirect to local method.  
     /// <summary>  
     /// Redirect to local method.  
     /// </summary>  
     /// <param name="returnUrl">Return URL parameter.</param>  
     /// <returns>Return redirection action</returns>  
     private ActionResult RedirectToLocal(string returnUrl)  
     {  
       try  
       {  
         // Verification.  
         if (Url.IsLocalUrl(returnUrl))  
         {  
           // Info.  
           return this.Redirect(returnUrl);  
         }  
       }  
       catch (Exception ex)  
       {  
         // Info  
         throw ex;  
       }  
       // Info.  
       return this.RedirectToAction("Index", "Home");  
     }  
     #endregion  
     #endregion  
   }  
 }  

In above code, following piece of code is important i.e.


   #region Sign In method.  
     /// <summary>  
     /// Sign In User method.  
     /// </summary>  
     /// <param name="username">Username parameter.</param>  
     /// <param name="role_id">Role ID parameter</param>  
     /// <param name="isPersistent">Is persistent parameter.</param>  
     private void SignInUser(string username, int role_id, bool isPersistent)  
     {  
       // Initialization.  
       var claims = new List<Claim>();  
       try  
       {  
         // Setting  
         claims.Add(new Claim(ClaimTypes.Name, username));  
         claims.Add(new Claim(ClaimTypes.Role, role_id.ToString()));  
         var claimIdenties = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);  
         var ctx = Request.GetOwinContext();  
         var authenticationManager = ctx.Authentication;  
         // Sign In.  
         authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, claimIdenties);  
       }  
       catch (Exception ex)  
       {  
         // Info  
         throw ex;  
       }  
     }  
     #endregion  

Here, along with claiming "Username" in OWIN security layer, we are also claiming "role_id" to provide role base accessibility:


claims.Add(new Claim(ClaimTypes.Role, role_id.ToString()));  

7) Now, create new controller under "Controller" folder, name it "HomeController.cs" and replace it with following code i.e.


// <copyright file="HomeController.cs" company="None">  
 //   Copyright (c) Allow to distribute this code.  
 // </copyright>  
 // <author>Asma Khalid</author>  
 //-----------------------------------------------------------------------  
 namespace RoleBaseAccessibility.Controllers  
 {  
   using System;  
   using System.Collections.Generic;  
   using System.Linq;  
   using System.Web;  
   using System.Web.Mvc;  
   /// <summary>  
   /// Home controller class.  
   /// </summary>  
   [Authorize]  
   public class HomeController : Controller  
   {  
     #region Index method.  
     /// <summary>  
     /// Index method.  
     /// </summary>  
     /// <returns>Returns - Index view</returns>  
     public ActionResult Index()  
     {  
       return this.View();  
     }  
     #endregion  
     #region Admin Only Link  
     /// <summary>  
     /// Admin only link method.  
     /// </summary>  
     /// <returns>Returns - Admin only link view</returns>  
     [Authorize(Roles = "1")]  
     public ActionResult AdminOnlyLink()  
     {  
       return this.View();  
     }  
     #endregion  
   }  
 }  

In above code, we have simply created two views, one is accessible to all the user which is "Index" view and second method is accessible to only "Admin" role user with role_id = 1. Following piece of code will translate the role base accessibility in OWIN security layer i.e.


[Authorize(Roles = "1")]  

If you want to define role accessibility for multiple roles you can achieve it like following:


[Authorize(Roles = "1, 2, 3")]  

where, 2, 3 are role id(s). 8) Replace following code in "_LoginPartial.cshtml" file:


@*@using Microsoft.AspNet.Identity*@  
 @if (Request.IsAuthenticated)  
 {  
   using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))  
   {  
     @Html.AntiForgeryToken()  
     <ul class="nav navbar-nav navbar-right">  
       @if (Convert.ToInt32(this.Session["role_id"]) == 1)  
       {   
         <li>  
           @Html.ActionLink("Admin Only Link", "AdminOnlyLink", "Home")  
         </li>  
       }  
       <li>  
         @Html.ActionLink("Hello " + User.Identity.Name + "!", "Index", "Home", routeValues: null, htmlAttributes: new { title = "Manage" })  
       </li>  
       <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>  
     </ul>  
   }  
 }  
 else  
 {  
   <ul class="nav navbar-nav navbar-right">  
     <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>  
   </ul>  
 }  
   
9) Execute the project and you will see following:
 

10) When you login as admin account you will able to see a link that only admin can see as follow:



11) When you login as non-admin account you won't see the link that admin can see but, if you try to open the link which supposedly you do not have access of, you will be redirected to your home page as follow:



That's about it!!

Enjoy coding!!!

185 comments:

  1. Pretty article! I found some useful information in your blog, it was awesome to read, thanks for sharing this great content to my vision, keep sharing.
    Java Project Center in Chennai | Java Project Center in Velachery

    ReplyDelete
  2. Very informative blog to sharing..Thanks for collecting important points..Keep sharing..
    No.1 IOS Training Institute in Chennai | Best IOS Training Institute in Velachery

    ReplyDelete
  3. Very nice blog. I appreciate your coding knowledge. This blog gave me a good idea to develop the android application.Thanks for sharing...No.1 IOS Training Institute in Velachery | Best Android Training Institute in Velachery | Core Java Training Institute in Chennai

    ReplyDelete
  4. I gain more knowledge from your post..Thanks for sharing valuable information from your post..
    Summer Courses in Adyar | Summer Courses in OMR | Summer Courses in Velachery

    ReplyDelete
  5. Very informative post! There is a lot of information here that can help any business get started with a successful...
    Summer Courses for Business Administration in Chennai | Best Summer Courses in Porur

    ReplyDelete
  6. The content you post in this site is very useful to me.I am very greatful to show my thanks.
    Livewire Velachery.
    9384409662

    ReplyDelete
  7. This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.

    rpa training in chennai
    rpa training in bangalore
    rpa training in pune
    rpa training in marathahalli
    rpa training in btm

    ReplyDelete
  8. Thank you for the kind words. I recommend that if you are tech blogger then do go to online tech communities like technet wiki or C-sharpcorner and respond forums Q/A it will help you a lot.

    ReplyDelete
  9. Great Blog. I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.

    AWS Training in Bangalore

    Best AWS Training Institute in Bangalore

    ReplyDelete
  10. Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here.
    date analytics certification training courses
    data science courses training
    data analytics certification courses in Bangalore
    ExcelR Data science courses in Bangalore

    ReplyDelete
  11. Thanks for sharing information about role base accessibility, Great post i must say and thanks for the information. I appreciate your post.

    Data Science

    ReplyDelete
  12. I recently found many useful information in your website especially this blog page. Among the lots of comments on your articles. Thanks for sharing.



    DATA SCIENCE COURSE

    ReplyDelete
  13. I have read your article, it is very informative and helpful for me.I admire the valuable information you offer in your articles. Thanks for posting it..
    data analytics course malaysia

    ReplyDelete
  14. I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
    www.technewworld.in
    How to Start A blog 2019
    Eid AL ADHA

    ReplyDelete


  15. I just got to this amazing site not long ago. I was actually captured with the piece of resources you have got here. Big thumbs up for making such wonderful blog page! How to increase domain authority in 2019

    ReplyDelete
  16. Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
    Data science training in Electronic City

    ReplyDelete
  17. Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.
    iot training in malaysia

    ReplyDelete
  18. I would definitely thank the admin of this blog for sharing this information with us. Waiting for more updates from this blog admin.
    salesforce Training in Bangalore
    uipath Training in Bangalore
    blueprism Training in Bangalore

    ReplyDelete
  19. Wow...What an excellent informative blog, really helpful. Thank you so much for sharing such a wonderful article with us.keep updating..
    aws Training in Bangalore
    python Training in Bangalore
    hadoop Training in Bangalore
    angular js Training in Bangalore
    bigdata analytics Training in Bangalore

    ReplyDelete
  20. Thank you for providing this kind of useful information,I am searching for this kind of useful information. it is very useful to me and some other looking for it. It is very helpful to who are searching datascience with python.datascience with python training in bangalore

    ReplyDelete
  21. Great post! I am actually getting ready to across this information, is very helpful my friend. Also great blog here with all of the valuable information you have. Keep up the good work you are doing here.
    Advertising Agency
    3d Animation Services
    Branding services
    Web Design Services in Chennai
    Advertising Company in Chennai

    ReplyDelete
  22. Thanks for sharing this great article! That is very interesting I love reading and I am always searching for informative articles like this..
    Cisco Certification Training in Chennai | Cisco Certification Courses in OMR | Cisco Certification Exams in Velachery

    ReplyDelete
  23. Amazing blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it..
    Embedded System Training Institute in Chennai | Embedded Training in Velachery | Embedded Courses in T.nagar

    ReplyDelete
  24. Great post.Thanks for one marvelous posting! I enjoyed reading it;The information was very useful.Keep the good work going on!!
    Tally Training Institute in Chennai | Tally Training in Velachery | Best Tally Courses in Guindy | Tally Training Center in Pallikaranai

    ReplyDelete
  25. I am reading your post from the beginning,it was so interesting to read & I feel thanks to you for posting such a good blog,keep updates regularly..
    Web Designing and Development Training in Chennai | Web Designing Training Center in Velachery | Web Design Courses in Pallikaranai

    ReplyDelete
  26. Awesome post.. Really you are done a wonderful job.thank for sharing such a wonderful information with us..please keep on updating..
    PCB Designing Training Institute in Chennai | PCB Training Center in Velachery | PCB Design Courses in Thiruvanmiyur

    ReplyDelete
  27. This comment has been removed by the author.

    ReplyDelete
  28. A really great post. I found a lot of useful information here.
    Data Science Training in Hyderabad

    ReplyDelete
  29. thanks for sharing this useful with us ... keep updating
    Data Science Training in Hyderabad

    ReplyDelete
  30. Thank you for the support Deepti

    ReplyDelete
  31. I must appreciate you for providing such a valuable content for us. This is one amazing piece of article. Helped a lot in increasing my knowledge.Thanks for sharing it.I got Very valuable information from your blog.your post is really very Informative.I’m satisfied with the information that you provide for me.

    AWS Training in Pune | Best Amazon Web Services Training in Pune

    ReplyDelete
  32. Pretty blog, so many ideas in a single site, thanks for the informative article, keep updating more article.
    Oracle Training Institute in Chennai | Oracle Certification Training in Velachery | Oracle Courses in Pallikaranai

    ReplyDelete
  33. Very interesting article.Helps to gain knowledge about lot of information. Thanks for posting information in this blog...
    Java Training Institute in Chennai | Java Training Center in Velachery | Advanced java Courses in Porur

    ReplyDelete
  34. Thanks for sharing it.I got Very valuable information from your blog.your post is really very Informative.I’m satisfied with the information that you provide for me.Nice post. By reading your blog, i get inspired and this provides some useful information.

    selenium training in pune with placement

    ReplyDelete
  35. thanks for sharing .it is really very helpful blog.nice bolg.
    angular js training in pune with placement

    ReplyDelete
  36. Thank you deepti for your kind words and support. Keep supporting and spread the word.

    ReplyDelete
  37. Very interesting blog which helps me to get the in depth knowledge about the technology, Thanks for sharing such a nice blog...
    IOT Project Center in Chennai | IOT Project Center in Velachery | IOT Projects for BE in Pallikaranai | IOT Projects for ME in Taramani

    ReplyDelete
  38. Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!

    digital marketing course

    For more info :
    ExcelR - Data Science, Data Analytics, Business Analytics Course Training in Mumbai

    304, 3rd Floor, Pratibha Building. Three Petrol pump, Opposite Manas Tower, LBS Rd, Pakhdi, Thane West, Thane, Maharashtra 400602
    18002122120

    ReplyDelete
  39. Thanks for sharing an informative article. keep update like this...
    data science courses in bangalore

    ReplyDelete
  40. I will really appreciate the writer's choice for choosing this excellent article appropriate to my matter.Here is deep description about the article matter which helped me more.

    digital marketing course

    ReplyDelete
  41. Really awesome blog!!! I finally found great post here.I really enjoyed reading this article. It's really a nice experience to read your post. Thanks for sharing your innovative ideas. Excellent work! I will get back here.
    Data Science Course Training in Bangalore

    ReplyDelete
  42. Thank you Priyanka for all your support.

    ReplyDelete
  43. This Was An Amazing ! I Haven't Seen This Type of Blog Ever ! Thankyou For Sharing, data sciecne course in hyderabad

    ReplyDelete
  44. Thank you Hrithiksai for all your support.

    ReplyDelete
  45. This is an excellent post I have seen thanks to sharing it. It is really what I wanted to see hope in future you will continue for sharing such an excellent post. I would like to add a little comment data analytics course

    ReplyDelete
  46. This comment has been removed by the author.

    ReplyDelete
  47. Incredible composition! You have a style for enlightening composition. Your substance has intrigued me incredible. I have a great deal of esteem for your composition. Much thanks to you for all your important contribution on this point.


    Denial management software
    Denials management software
    Hospital denial management software
    Self Pay Medicaid Insurance Discovery
    Uninsured Medicaid Insurance Discovery
    Medical billing Denial Management Software
    Self Pay to Medicaid
    Charity Care Software
    Patient Payment Estimator
    Underpayment Analyzer
    Claim Status

    ReplyDelete
  48. This comment has been removed by the author.

    ReplyDelete
  49. I have recently visited your blog profile. I am totally impressed by your blogging skills and knowledge.
    Data Science Course in Hyderabad

    ReplyDelete
  50. This comment has been removed by the author.

    ReplyDelete
  51. I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own Blog Engine blog now. Really the blogging is spreading its wings rapidly. Your write up is a fine example of it.
    Data Science Training Institute in Bangalore

    ReplyDelete
  52. Excellent effort to make this blog more wonderful and attractive.

    Data Science Course

    ReplyDelete
  53. I have a mission that I’m just now working on, and I have been at the look out for such information.

    Data Science Training

    ReplyDelete
  54. I have a mission that I’m just now working on, and I have been at the look out for such information.

    Data Science Training

    ReplyDelete
  55. Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.
    digital marketing course in guduvanchery

    ReplyDelete
  56. This blog is the general information for the feature. You got a good work for these blog.We have a developing our creative content of this mind.Thank you for this blog. This for very interesting and useful.

    selenium training in chennai

    selenium training in chennai

    selenium online training in chennai

    selenium training in bangalore

    selenium training in hyderabad

    selenium training in coimbatore

    selenium online training

    ReplyDelete
  57. The data that you provided in the blog is informative and effective.I am happy to visit and read useful articles here. I hope you continue to do the sharing through the post to the reader. Read more about
    Your post is just outstanding! thanks for such a post,its really going great and great work.You have provided great knowledge about thr web design development and search engine optimization
    Java training in Chennai

    Java Online training in Chennai

    Java Course in Chennai

    Best JAVA Training Institutes in Chennai

    Java training in Bangalore

    Java training in Hyderabad

    Java Training in Coimbatore

    Java Training

    Java Online Training

    ReplyDelete

  58. Wonderful article.It is to define the concepts very well.Clearly explain the information.It has more valuable information for encourage me to achieve my career goal

    Azure Training in Chennai

    Azure Training in Bangalore

    Azure Training in Hyderabad

    Azure Training in Pune

    Azure Training | microsoft azure certification | Azure Online Training Course

    Azure Online Training

    ReplyDelete
  59. Subsequently, after spending many hours on the internet at last We've uncovered an individual that definitely does know what they are discussing many thanks a great deal wonderful post.
    DevOps Training in Chennai

    DevOps Online Training in Chennai

    DevOps Training in Bangalore

    DevOps Training in Hyderabad

    DevOps Training in Coimbatore

    DevOps Training

    DevOps Online Training

    ReplyDelete
  60. This Was An Amazing ! I Haven't Seen This Type of Blog Ever ! Thankyou For Sharing, data science course in hyderabad

    ReplyDelete
  61. Good blog and absolutely exceptional. You can do a lot better, but I still say it's perfect. Keep doing your best.

    360DigiTMG Data Science Certification

    ReplyDelete
  62. Excellant post!!!. The strategy you have posted on this technology helped me to get into the next level and had lot of information in it.
    IELTS Coaching in chennai

    German Classes in Chennai

    GRE Coaching Classes in Chennai

    TOEFL Coaching in Chennai

    spoken english classes in chennai | Communication training


    ReplyDelete
  63. Awesome article with unique information and was very useful thanks for sharing.
    Data Science Training in Hyderabad 360DigiTMG

    ReplyDelete
  64. Thanks for providing valuable and knowledgeable information thank you.
    360DigiTMG Data Analytics Training 360DigiTMG

    ReplyDelete
  65. I looked at some very important and to maintain the length of the strength you are looking for on your website
    ai training in noida

    ReplyDelete
  66. Really fine and interesting informative article. I used to be looking for this kind of advice and enjoyed looking over this one. Thank you for sharing.Learn 360DigiTMG Tableau Course in Bangalore

    ReplyDelete
  67. Terrific post thoroughly enjoyed reading the blog and more over found to be the tremendous one. In fact, educating the participants with it's amazing content. Hope you share the similar content consecutively.

    ai course in bhilai

    ReplyDelete
  68. Honestly speaking this blog is absolutely amazing in learning the subject that is building up the knowledge of every individual and enlarging to develop the skills which can be applied in to practical one. Finally, thanking the blogger to launch more further too.

    Data Science Course in Bhilai

    ReplyDelete
  69. I don't have time to read your entire site right now, but I have bookmarked it and added your RSS feeds as well. I'll be back in a day or two. Thank you for this excellent site.

    Data Analytics Course in Bangalore

    ReplyDelete
  70. I was very happy to find this site. I wanted to thank you for this excellent reading !! I really enjoy every part and have bookmarked you to see the new things you post.

    Artificial Intelligence Course in Bangalore

    ReplyDelete
  71. Very interesting to read this article.I would like to thank you for the efforts. I also offer Data Scientist Courses data scientist courses

    ReplyDelete
  72. You completed a number of nice points there. I did a search on the issue and found nearly all people will have the same opinion with your blog.
    Digital Marketing Training Institutes in Hyderabad

    ReplyDelete
  73. Tremendous blog quite easy to grasp the subject since the content is very simple to understand. Obviously, this helps the participants to engage themselves in to the subject without much difficulty. Hope you further educate the readers in the same manner and keep sharing the content as always you do.

    Data Science training

    ReplyDelete
  74. This Was An Amazing! I Haven't Seen This Type of Blog Ever! Thank you for Sharing, data scientist course in Hyderabad with placement

    ReplyDelete
  75. Through this post, I realize that your great information in playing with all the pieces was exceptionally useful. I advise this is the primary spot where I discover issues I've been scanning for. You have a smart yet alluring method of composing.
    data science courses in delhi

    ReplyDelete
  76. Very nice blogs!!! i have to learning for lot of information for this sites…Sharing for wonderful information. Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing, data scientist courses

    ReplyDelete
  77. I am impressed by the information that you have on this blog. Thanks for Sharing

    ReplyDelete
  78. I am impressed by the information that you have on this blog. Thanks for Sharing

    ReplyDelete
  79. Great article. I highly recommended you. Click here for data science course in Hyderabad.

    ReplyDelete
  80. I recently came across your article and have been reading along. I want to express my admiration of your writing skill and ability to make readers read from the beginning to the end. I would like to read newer posts and to share my thoughts with you.
    data science certification

    ReplyDelete
  81. This is most informative and also this post most user-friendly and super navigation to all posts.
    Online Data Science Classes
    Selenium Training in Pune
    AWS Online Classes
    Python Online Classes

    ReplyDelete
  82. Cool stuff you have and you keep overhaul every one of us
    data science courses

    ReplyDelete
  83. Cool stuff you have and you keep overhaul every one of us
    data science training in delhi

    ReplyDelete
  84. Wow, cool post. I'd like to write like this too - taking time and real hard work to make a great article... but I put things off too much and never seem to get started. Thanks though.

    Web Design Cheltenham
    SEO Gloucester
    Local SEO Agency Gloucester
    Local SEO Company Uk

    ReplyDelete
  85. Really impressed! Everything is a very open and very clear clarification of the issues. It contains true facts. Your website is very valuable. Thanks for sharing.

    Data Science Training in Bangalore

    ReplyDelete
  86. I recently found a lot of useful information on your website, especially on this blog page. Among the many comments on your articles. Thanks for sharing.

    Best Data Science Courses in Bangalore

    ReplyDelete
  87. Really I enjoy your site with effective and useful information. It is included very nice post with a lot of our resources. Thanks for share. I enjoy this post.

    pastebin ask FM community sony seekingalpha knowyourmeme sbnation

    ReplyDelete

  88. I see some amazingly important and kept up to a length of your strength searching for in your on the site

    Best Data Science Courses in Hyderabad

    ReplyDelete
  89. First You got a great blog .I will be interested in more similar topics. I see you have really very useful topics, i will be always checking your blog thanks.
    digital marketing courses in hyderabad with placement

    ReplyDelete
  90. Hello very helpful content.
    can you please post OAuth with OpenID

    ReplyDelete
  91. thank you for sharing a interesting article
    Angular training in Chennai

    ReplyDelete
  92. I am genuinely thankful to the holder of this web page who has shared this wonderful paragraph at at this place.
    business analytics course

    ReplyDelete
  93. This knowledge.Excellently written article, if only all bloggers offered the same level of content as you, the internet would be a much better place. Please keep it up.
    best data science course online

    ReplyDelete
  94. The information you have posted is very useful. The sites you have referred was good. Thanks for sharing.
    data scientist online course

    ReplyDelete
  95. Extraordinary blog filled with an amazing content which no one has touched this subject before. Thanking the blogger for all the terrific efforts put in to develop such an awesome content. Expecting to deliver similar content further too and keep sharing as always.

    Data Science Training

    ReplyDelete
  96. Stupendous blog huge applause to the blogger and hoping you to come up with such an extraordinary content in future. Surely, this post will inspire many aspirants who are very keen in gaining the knowledge. Expecting many more contents with lot more curiosity further.

    Data Science Certification in Bhilai

    ReplyDelete
  97. Thanks for posting the best information and the blog is very informative.digital marketing institute in hyderabad

    ReplyDelete
  98. You have completed certain reliable points there. I did some research on the subject and found that almost everyone will agree with your blog.

    DevOps Training in Hyderabad

    ReplyDelete
  99. Great tips and very easy to understand. This will definitely be very useful for me when I get a chance to start my blog.
    data science course in malaysia

    ReplyDelete
  100. "Thank you very much for your information.
    From,
    "
    ai training in chennai

    ReplyDelete
  101. I wanted to leave a little comment to support you and wish you the best of luck. We wish you the best of luck in all of your blogging endeavors.

    Ethical Hacking Training in Bangalore

    ReplyDelete


  102. Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing. ethical hacking course in nagpur

    ReplyDelete
  103. I am overwhelmed by your post with such a nice topic. Usually I visit your blogs and get updated through the information you include but today’s blog would be the most appreciable. Well done!
    cloud computing course in hyderabad

    ReplyDelete
  104. Excellent effort to make this blog more wonderful and attractive.
    Business Analytics Course in Bangalore

    ReplyDelete
  105. I was browsing the internet for information and found your blog. I am impressed with the information you have on this blog
    MLOps Course

    ReplyDelete
  106. Impressive. Your story always bring hope and new energy. Keep up the good work. Data Science Training in Vadodara

    ReplyDelete
  107. Very informative message! There is so much information here that can help any business start a successful social media campaign!

    Business Analytics Course in Kolkata

    ReplyDelete
  108. Thank you very much for sharing such a great article. Great post I must say and thanks for the information. Education is definitely a sticky subject. very informative. Take care.Digital marketing training Mumbai

    ReplyDelete
  109. Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people..
    full stack web development course

    ReplyDelete
  110. A good blog always contains new and exciting information, and reading it I feel like this blog really has all of these qualities that make it a blog.

    Data Analytics Course in Nagpur

    ReplyDelete
  111. Thanks for the information about Blogspot very informative for everyone
    data analytics course in aurangabad

    ReplyDelete
  112. Nice and very informative blog, glad to learn something through you.
    ai course aurangabad

    ReplyDelete
  113. I was just examining through the web looking for certain information and ran over your blog.It shows how well you understand this subject. Bookmarked this page, will return for extra. PMP Course in Malaysia

    ReplyDelete
  114. Best AWS Training provided by Vepsun in Bangalore for the last 12 years. Our Trainer has more than 20+ Years
    of IT Experience in teaching Virtualization and Cloud topics.. we are very delighted to say that Vepsun is
    the Top AWS cloud training Provider in Bangalore. We provide the best atmosphere for our students to learn.
    Our Trainers have great experience and are highly skilled in IT Professionals. AWS is an evolving cloud
    computing platform provided by Amazon with a combination of IT services. It includes a mixture of
    infrastructure as service and packaged software as service offerings and also automation. We have trained
    more than 10000 students in AWS cloud and our trainer Sameer has been awarded as the best Citrix and Cloud
    trainer in india.

    ReplyDelete
  115. This post is very simple to read and appreciate without leaving any details out. Great work!
    360DigiTMG data analytics course

    ReplyDelete
  116. I must admit that your post is really interesting. I have spent a lot of my spare time reading your content. Thank you a lot! data science certification course in chennai

    ReplyDelete
  117. I just couldn't leave your website before telling you that I truly enjoyed the top quality info you present to your visitors? Will be back again frequently to check up on new posts.
    data science training in kochi

    ReplyDelete
  118. You completed certain reliable points there. I did a search on the subject and found nearly all persons will agree with your blog.data science training institute in chennai

    ReplyDelete
  119. I would like to say that this blog really convinced me to do it and thanks for informative post and bookmarked to check out new things of your post…
    Data Science Institute in Noida

    ReplyDelete
  120. Excellent work done by you once again here and this is just the reason why I’ve always liked your work with amazing writing skills and you display them in every article. Keep it going!
    Data Analytics Courses in Hyderabad

    ReplyDelete
  121. Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts.
    full stack developer course with placement

    ReplyDelete
  122. Thank you so much for sharing this information. Do visit Free inplant training in Chennai

    ReplyDelete
  123. I curious more interest in some of them hope you will give more information on this topics in your next articles.data scientist course in chennai”

    ReplyDelete
  124. It’s really a cool and helpful piece of information. I am glad that you shared this useful information with us. Please keep us up to date like this. Thanks for sharing. DevOps Classes in Pune

    ReplyDelete
  125. Good post. I appreciate you sharing! I want everyone to realise how excellent the material in your essay is. Great work and interesting stuff.
    Data Analytics Course in Pune

    ReplyDelete
  126. Brilliant Blog! I might want to thank you for the endeavors you have made recorded as a hard copy of this post.
    I am trusting a similar best work from you later on also.
    I needed to thank you for these sites! Much obliged for sharing. Incredible sites!
    data science institute in pune

    ReplyDelete
  127. Brilliant Blog! I might want to thank you for the endeavors you have made recorded as a hard copy of this post.
    I am trusting a similar best work from you later on also.
    I needed to thank you for these sites! Much obliged for sharing. Incredible sites!
    data science institute in pune

    ReplyDelete
  128. Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post .data analytics institute in hyderabad

    ReplyDelete
  129. I appreciate your quality stuff, that was really so useful and informative
    AWS Training in Chennai

    ReplyDelete
  130. I appreciate your quality stuff, that was really so useful and informative
    AWS Training in Chennai

    ReplyDelete
  131. informative blog , keep posting reactjs course in pune

    ReplyDelete
  132. We are very grateful to you for this information and we hope that you will continue to give us such information.
    sap fico training in Marathahalli

    ReplyDelete
  133. I am so grateful for your blog.I Really looking forward to read more Really Great.
    sap fico training in btm layout

    ReplyDelete
  134. Being a data analytics aspirant, this post has been a great help to me. I stumbled upon this article when I was looking for a pathway to become a certified data analyst looking for an accredited data analytics course. This site contains an extraordinary material collection that 360DigiTMG courses.

    ReplyDelete
  135. amazing writeup, keep posting and checkout our blog aws training in pune

    ReplyDelete
  136. informative blog keep posting aws training in pune

    ReplyDelete