【发布时间】:2011-05-02 01:09:41
【问题描述】:
我在这里有一些独特的情况。我正在制作一个将拥有的 Web 应用程序 使用不同的 Web 应用程序凭据登录的能力。例如,您可以登录/注册我的网站,或者您可以登录/注册您的 YouTube 帐户。我没有使用 OpenID,因为在这种情况下我需要访问 YouTube 的数据。
我正在使用 ASP.NET MVC 3 EF4 和自定义成员、角色、配置文件提供程序。
问题是用户名不能是唯一的,因为拥有 YouTube 用户名的人可能与在我的网站上注册的人拥有相同的用户名。所以我通过在我的用户表中指定一个用户类型来解决问题。这几乎是一个复合键(用户 ID 和用户类型)。
我有一个自定义授权属性,用于检查用户所在的角色,但现在我需要实现自定义 IPrincipal,因为我需要传递用户类型。唯一的问题是我在哪里存储它?会议?
最初我认为这就是应用程序表的用途,我暂时成功了,但是读到存在线程问题,而且我在整个地方都遇到了会话错误,这并不是那么好:(
我想知道最好的方法是因为我不能使用提供程序中的重写方法,因为我必须向某些方法添加 UserType 参数,但这会破坏提供程序的功能.
编辑: 我基本上需要能够在运行时以编程方式更改 ApplicationName。我试过这样做,唯一的问题是当我停止开发服务器但打开浏览器然后再次运行我的开发服务器时,它不会保留应用程序名称。
编辑: 我已将我的应用程序更改为使用 OAuth,但我从未找到一个好的解决方案。
【问题讨论】:
-
好问题。我过去不得不这样做,只有 1/2 的人喜欢我创建的解决方案。当我从我妻子那里拿回我的电脑时,我会给你看一些代码。 :)
标签: c# asp.net asp.net-mvc security