亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

NancyFormsAuthentication使用

2019-11-14 13:38:20
字體:
來源:轉載
供稿:網友

1、新建UserDatabase類,實現IUserMapper接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Security.PRincipal;

using Nancy.Authentication.Forms;

public class UserDatabase : IUserMapper
{
private static List<Tuple<string, string, Guid>> users = new List<Tuple<string, string, Guid>>();

static UserDatabase()
{
users.Add(new Tuple<string, string, Guid>("admin", "passWord", new Guid("55E1E49E-B7E8-4EEA-8459-7A906AC4D4C0")));
users.Add(new Tuple<string, string, Guid>("user", "password", new Guid("56E1E49E-B7E8-4EEA-8459-7A906AC4D4C0")));
}

public ClaimsPrincipal GetUserFromIdentifier(Guid identifier, NancyContext context)
{
var userRecord = users.FirstOrDefault(u => u.Item3 == identifier);

return userRecord == null
? null
: new ClaimsPrincipal(new ClaimsIdentity(BuildClaims(userRecord.Item1), "querystring"));
}

public static Guid? ValidateUser(string username, string password)
{
var userRecord = users.FirstOrDefault(u => u.Item1 == username && u.Item2 == password);

if (userRecord == null)
{
return null;
}

return userRecord.Item3;
}

/// <summary>
/// Build claims based on username
/// </summary>
/// <param name="userName">Current username</param>
/// <returns>IEnumerable of claims</returns>
private static IEnumerable<Claim> BuildClaims(string userName)
{
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Role, userName));
return claims;
}
}

2、新建FormsAuthBootstrapper啟動類

using Nancy.Authentication.Forms;
using Nancy.Bootstrapper;
using Nancy.TinyIoc;

public class FormsAuthBootstrapper : DefaultNancyBootstrapper
{
protected override void ConfigureapplicationContainer(TinyIoCContainer container)
{
// We don't call "base" here to prevent auto-discovery of
// types/dependencies
}

protected override void ConfigureRequestContainer(TinyIoCContainer container, NancyContext context)
{
base.ConfigureRequestContainer(container, context);

// Here we register our user mapper as a per-request singleton.
// As this is now per-request we could inject a request scoped
// database "context" or other request scoped services.
container.Register<IUserMapper, UserDatabase>();
}

protected override void RequestStartup(TinyIoCContainer requestContainer, IPipelines pipelines, NancyContext context)
{
// At request startup we modify the request pipelines to
// include forms authentication - passing in our now request
// scoped user name mapper.
//
// The pipelines passed in here are specific to this request,
// so we can add/remove/update items in them as we please.
var formsAuthConfiguration =
new FormsAuthenticationConfiguration()
{
RedirectUrl = "~/login",
UserMapper = requestContainer.Resolve<IUserMapper>(),
};

FormsAuthentication.Enable(pipelines, formsAuthConfiguration);
}
}

3、登錄方法實現

Post["/login"] = x => {
var userGuid = UserDatabase.ValidateUser((string)this.Request.Form.Username, (string)this.Request.Form.Password);

if (userGuid == null)
{
return this.Context.GetRedirect("~/login?error=true&username=" + (string)this.Request.Form.Username);
}

DateTime? expiry = null;
if (this.Request.Form.RememberMe.HasValue)
{
expiry = DateTime.Now.AddDays(7);
}

return this.LoginAndRedirect(userGuid.Value, expiry);
};

4、需要授權地方使用

Get["/secured"] = x => {
this.RequiresAuthentication();//需要登錄才能訪問,否則返回bootstrap配置中的地址。
this.RequiresClaims(c => c.Type == ClaimTypes.Role && c.Value == "admin");//申明了admin的角色才可訪問,否則403

//this.RequiresAnyClaim(h=>h.Value== "admin"||h.Value=="User"); //申明值為admin或user的均可訪問,否則403

var model = new UserModel(this.Context.CurrentUser.Identity.Name);
return View["secure.cshtml", model];
};


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久视频在线观看免费| 久久久精品亚洲| 国产va免费精品高清在线观看| 97精品国产97久久久久久免费| 亚洲天堂视频在线观看| 中文字幕欧美日韩精品| 中文字幕视频在线免费欧美日韩综合在线看| 在线亚洲午夜片av大片| 国产亚洲成av人片在线观看桃| 国产精品流白浆视频| 日韩高清不卡av| 午夜精品久久久久久久99黑人| 欧美中文字幕在线播放| 欧美国产日韩一区二区在线观看| 性视频1819p久久| 欧美性猛交xxxx乱大交3| 欧美自拍视频在线| 久久精视频免费在线久久完整在线看| 日韩欧美精品网址| 136fldh精品导航福利| 亚洲**2019国产| 国产精品久久视频| 日韩女优人人人人射在线视频| 国产主播喷水一区二区| 欧美裸体视频网站| 中文字幕九色91在线| 亚洲精品综合久久中文字幕| 中文.日本.精品| 日韩av免费在线观看| 亚洲激情中文字幕| 亚洲国产91精品在线观看| 欧美日韩在线免费观看| 日韩精品中文字| 一区二区欧美激情| 午夜精品视频在线| 国产精品第8页| 精品久久久久久亚洲国产300| 色吧影院999| 中文字幕综合在线| 国产香蕉精品视频一区二区三区| 国产视频欧美视频| 成人午夜在线影院| 视频在线一区二区| 色综合久久久888| 麻豆国产精品va在线观看不卡| 日韩av电影手机在线观看| 日韩欧美在线观看视频| 亚洲综合成人婷婷小说| 国产精品久在线观看| 久久久视频免费观看| 亚洲老头同性xxxxx| 亚洲国产欧美在线成人app| 久久99热精品这里久久精品| 精品福利在线视频| 日韩大陆毛片av| 亚洲国产91精品在线观看| 992tv成人免费影院| 久久国产色av| 亚洲第一精品夜夜躁人人躁| 国产丝袜一区二区三区免费视频| 日韩成人激情影院| 中文字幕免费国产精品| 国产99视频在线观看| 国产精品久久久久久av福利软件| 亚洲精品久久视频| 欧美性少妇18aaaa视频| 国内偷自视频区视频综合| 国产精品草莓在线免费观看| 九九九久久久久久| 久久av红桃一区二区小说| 日韩av在线一区二区| 亚洲人精选亚洲人成在线| 亚洲电影免费观看| 欧美高清视频在线观看| 国产精品欧美久久久| 亚洲精品久久久久久久久久久久久| 久久久之久亚州精品露出| 精品中文字幕在线| 欧美一级淫片videoshd| 亚洲国产日韩欧美综合久久| 亚洲国产天堂网精品网站| 色久欧美在线视频观看| 国内精品美女av在线播放| 亚洲精品福利在线| 久久国产精品首页| 国产精品视频导航| 欧美性xxxxxxx| 4444欧美成人kkkk| 久久精品精品电影网| 久久久国产一区二区| 日韩精品中文字幕在线观看| 日韩中文在线中文网在线观看| 色樱桃影院亚洲精品影院| 亚洲精品mp4| 亚洲欧洲视频在线| 大量国产精品视频| 亚洲国产精品久久91精品| 亚洲自拍欧美另类| 国内精品久久久久伊人av| 亚洲国产一区二区三区四区| 久久天天躁狠狠躁夜夜躁2014| 日本欧美精品在线| 亚洲伊人第一页| 日韩暖暖在线视频| 国产精品h在线观看| 中文字幕精品久久久久| 亚洲精品自拍视频| 日韩在线播放av| 欧美大学生性色视频| 久久99国产精品自在自在app| 欧美大尺度激情区在线播放| 欧美成人第一页| 国产一区二区三区在线| 国产精品视频永久免费播放| 97超级碰碰人国产在线观看| 亚洲一二在线观看| 国产精品一区二区女厕厕| 色婷婷久久一区二区| 国产精品流白浆视频| 欧美另类在线观看| 欧美黑人视频一区| 日韩电影在线观看免费| 精品自拍视频在线观看| 国产精品偷伦一区二区| 欧美性生交大片免网| 北条麻妃一区二区三区中文字幕| 欧美午夜电影在线| 92裸体在线视频网站| 亚洲成人av在线播放| 欧美国产日韩二区| 久久男人的天堂| 国产精品你懂得| 国产精品久久久久久av| 亚洲综合在线中文字幕| 久久在线免费观看视频| 欧美日韩国产精品一区二区三区四区| 亚洲视频欧洲视频| 日本不卡免费高清视频| 欧美一级高清免费播放| 国产精品高潮粉嫩av| 992tv成人免费影院| 久久黄色av网站| 成人午夜小视频| 欧美精品在线网站| 亚洲成在人线av| 精品欧美国产一区二区三区| 九九热视频这里只有精品| 一个人看的www久久| 欧美日韩美女在线观看| 欧美最猛性xxxxx免费| 亚洲伊人久久大香线蕉av| 国产精品网红直播| 亚洲欧美中文日韩v在线观看| 久久久黄色av| 国产精品激情av电影在线观看| 日本a级片电影一区二区| 精品欧美国产一区二区三区| 91精品国产91久久久久福利| 国产精品电影网站| 久久97精品久久久久久久不卡| 这里只有精品久久| 欧美日韩国产影院| 日韩av大片在线| 国产91在线高潮白浆在线观看|