- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在构建一个我想使用的 ASP.NET MVC 站点 DotNetOpenAuth实现 OpenID 登录(我完全放弃了基于用户名/密码的登录)。
到目前为止,我一直在使用 ASP.NET 成员身份提供程序为默认用户名/密码系统编写代码,利用角色系统、配置文件系统和基本注册系统。现在,在我迁移到 OpenID 的过程中,我预见到一些问题,特别是与 ASP.NET 成员身份提供程序提供的成员控件的接口(interface)。
查看 DotNetOpenAuth MVC 示例,我看到对 FormsAuthentication 系统的唯一引用是创建一个 AuthCookie
,然后调用 FormsAuthentication.SignOut()
。因此,我不确定我是否可以将 ASP.NET 成员资格提供程序函数与此 OpenID 系统一起使用,尽管示例代码的另一部分调用了 User.Identity.IsAuthenticated
。
这个 OpenID 系统会与 ASP.NET 成员身份提供程序交互吗?如果不能,我能以某种方式解决这个问题吗?
如果以上完全不可能,我想我的下一步行动就是滚动我自己的数据库表并手动编写代码以从我的帐户 Controller 中使用它们。我注意到 Stack Exchange Data Explorer采用这种方法,但这是正确的做法吗?
编辑: 为了确保我使用的是正确的术语,“ASP.NET 成员身份提供程序”是指使用 aspnet_regsql.exe 生成的表的提供程序
工具。
最佳答案
它们的界面会很好,但您需要做一些自定义工作。
我过去的做法是这样的:
首先,我假设您有一个半工作的 openid 实现,这意味着您可以从 openid 提供程序接收实际身份,但不确定如何处理它。
我继续使用 FormsAuthentication 作为后端,即使不使用它进行身份验证也是如此。
您将需要一个数据库表,允许您将 FormsAuthentication 用户绑定(bind)到一个或多个 openid。您可以简单地将 FormsAuthentication 用户名(尚不存在)与您从 openid 提供程序收到的身份 URL 一起存储。我们称这个表为 AUTH
当有人使用 openid 对您的站点进行身份验证时,检查它是否存在于 AUTH 表中。如果不是,你需要做两件事。调用 Membership.CreateUser() 传递你想要的任何生成的用户名(或者电子邮件地址,如果由 openid 提供)。我使用 GUID 作为密码,因为它不会被使用。同时在 AUTH 表中放置一个条目,将成员(member)用户名映射到 openid 声明的身份。
当有人使用开放 ID 对您的站点进行身份验证并且该 ID 已经存在时,使用与 openid 关联的用户名调用 FormsAuthentication.RedirectFromLoginPage,并且将设置所有适当的身份验证票证。
现在您可以像在实现 openid 之前一样使用所有漂亮的内置安全对象。
编辑:作为此设置的一个额外好处,您将来可以选择允许用户名/密码登录。
您还可以随时更换您的成员(member)提供商。
此外,AUTH 表的多对一特性使您可以轻松关联多个 openid。
关于c# - 使用 OpenID(通过 DotNetOpenAuth)以及用户角色和其他成员(member)提供者功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218225/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!