Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8871831
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 14, 20262026-06-14T18:05:12+00:00 2026-06-14T18:05:12+00:00

I want to use NancyFx for an intranet web app. All the documentation and

  • 0

I want to use NancyFx for an intranet web app. All the documentation and forums only mention Forms and Basic authentication. Anyone successfully use Nancy with Windows Authentication?

There’s also something called Nancy.Authentication.Stateless but I can’t see what that does (looks like it’s for use in Apis).

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-14T18:05:13+00:00Added an answer on June 14, 2026 at 6:05 pm

    I used this in an internal project recently – I don’t really like it, and it ties you to asp.net hosting, but it did the job:

    namespace Blah.App.Security
    {
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Security.Principal;
        using System.Web;
    
        using Nancy;
    
        public static class SecurityExtensions
        {
            public static string CurrentUser
            {
                get
                {
                    return GetIdentity().Identity.Name;
                }
            }
    
            public static bool HasRoles(params string[] roles)
            {
                if (HttpContext.Current != null && HttpContext.Current.Request.IsLocal)
                {
                    return true;
                }
    
                var identity = GetIdentity();
    
                return !roles.Any(role => !identity.IsInRole(role));
            }
    
            public static void RequiresWindowsAuthentication(this NancyModule module)
            {
                if (HttpContext.Current != null && HttpContext.Current.Request.IsLocal)
                {
                    return;
                }
    
                module.Before.AddItemToEndOfPipeline(
                    new PipelineItem<Func<NancyContext, Response>>(
                        "RequiresWindowsAuthentication",
                        ctx =>
                            {
                                var identity = GetIdentity();
    
                                if (identity == null || !identity.Identity.IsAuthenticated)
                                {
                                    return HttpStatusCode.Forbidden;
                                }
    
                                return null;
                            }));
            }
    
            public static void RequiresWindowsRoles(this NancyModule module, params string[] roles)
            {
                if (HttpContext.Current != null && HttpContext.Current.Request.IsLocal)
                {
                    return;
                }
    
                module.RequiresWindowsAuthentication();
    
                module.Before.AddItemToEndOfPipeline(new PipelineItem<Func<NancyContext, Response>>("RequiresWindowsRoles", GetCheckRolesFunction(roles)));
            }
    
            private static Func<NancyContext, Response> GetCheckRolesFunction(IEnumerable<string> roles)
            {
                return ctx =>
                    {
                        var identity = GetIdentity();
    
                        if (roles.Any(role => !identity.IsInRole(role)))
                        {
                            return HttpStatusCode.Forbidden;
                        }
    
                        return null;
                    };
            }
    
            private static IPrincipal GetIdentity()
            {
                if (System.Web.HttpContext.Current != null)
                {
                    return System.Web.HttpContext.Current.User;
                }
    
                return new WindowsPrincipal(WindowsIdentity.GetCurrent());
            }
    
            public static Func<NancyContext, Response> RequireGroupForEdit(string group)
            {
                return ctx =>
                    {
                        if (ctx.Request.Method == "GET")
                        {
                            return null;
                        }
    
                        return HasRoles(group) ? null : (Response)HttpStatusCode.Forbidden;
                    };
            }
        }
    }
    

    It bypasses all the security checks if it’s coming from local (for testing), which is probably a bad idea, but it’s a behind the firewall thing so it isn’t an issue for this.

    Wouldn’t suggest you use it verbatim, but might point you in the right direction 🙂

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want use a single php file to handle all of my voting requests.
i want use some data from a website with web service. i have a
I don't want use old Visual Basic methods in my code, and I'm confused
in my app i want use the camera for capturing image and send to
I want use html5's new tag to play a wav file (currently only supported
I am using jruby, i want use pagination for my rails app i used
So I want use Leaks to find the leaks in my app. In Xcode,
I want use paramiko to ssh2 to a remote host by public-key authentication, I
I want use A-Z buttons on a html page like shown below (only sample
I want use webscreencapture to make a web screenshot. if I save the below

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.