南希的用户信息

Dav*_*uge 6 nancy

我正在敲一个基于Nancy.Demo.Authentication.Forms的演示应用程序.

我执行ClaimsUserName我的UserIdentity:IUserIdentity班,并按照演示中,我有一个UserModelUserName.

SecureModule课堂上,我可以看到Context.CurrentUser可以用来查看登录的是谁,但根据界面,这只提供用户名和声明.如果我需要为视图模型获取更多数据(比如登录用户的消息),我可以看到用作db查询的过滤器的是用户名,感觉很好,很奇怪.我更愿意使用用户的uniqueIdentifier.

我认为我想要深究,如果最好将额外的字段添加到我的IUserIdentity实现,或者UserModel?在哪里填充这些?

不确定我的问题是否清楚(我脑子里还不清楚!),但是一些一般的基本架构建议会让人失望.

Ste*_*ins 11

抱歉延迟回复..此刻忙碌:)

IUserIdentity是使用Nancy内置身份验证帮助程序所需的最小接口,您可以实现该功能并在您的类中添加任意数量的附加信息; 它类似于标准的.net IPrincipal.如果你确实添加了自己的信息,你显然必须转换为你的实现类型来访问其他字段.我们可以添加一个CurrentUser方法来阻止你这么做,但它似乎有点多余.

如果你愿意,你可以在这里停止阅读,或者你可以阅读如果你对表格auth如何工作感兴趣..

FormsAuth使用IUsernameMapper的实现(现在可能名称错误)来在存储在客户端cookie中的Guid用户标识符和实际用户(IUserIdentity)之间进行转换.值得注意的是,这个GUID需要映射到某个地方的用户/ id,但它不是你的数据库主键,它只是你(可能是可预测的)用户id /名称和"token"之间的间接层.存储在客户端上.虽然cookie是加密的和HMACd(取决于你的配置),如果有人设法破解并重建auth cookie,他们将不得不猜测别人的GUID以模仿他们,而不是更改用户名(到"管理员")或某事smilar),或id(第一个用户为1).

希望有道理:)