esb*_*enr 9 api membership-provider ravendb oauth-2.0 asp.net-mvc-4
建立一个也需要API的网站,因此(可能)OAuth支持登录我对如何处理用户和身份验证部分存在疑问.
所以我有一个带有RavenDB的ASP.NET MC4应用程序.
什么是最好的方法?
要使用RavenDB的成员资格提供程序之一并在API部分中单独处理Oauth?防爆.格里芬的解决方案在这里.
或者制作一个自定义解决方案,重新实现成员资格废话并支持OAuth.
我不确定从哪里开始,对于如何做到这一点的任何建议表示赞赏.
Pur*_*ome 10

**点击进入da GitHub项目**
IMO,忘记存储用户名和密码.那是疯狂的谈话!让人们使用他们的Facebook,Google或Twitter凭据登录.这是普通网站的80%.
身份验证和存储凭据是IMO的两个不同任务.例如,我不关心你在哪里进行身份验证..一旦你这样做..我不在乎你如何存储这些数据:)
就个人而言,我会把它存放在RavenDb中..但这是我个人的选择.
因此 - >保持这两个任务分离是(IMO)至关重要的.

那么让我们来看看一些代码 ....
public ActionResult AuthenticateCallback(string providerKey)
{
// SNIP SNIP SNIP SNIP
var model = new AuthenticateCallbackViewModel();
try
{
// SNIP SNIP SNIP SNIP
// Complete the authentication process by retrieving the UserInformation from the provider.
model.AuthenticatedClient = _authenticationService.CheckCallback(providerKey, Request.Params, state.ToString());
// Create a new user account or update an existing account.
// Whatever you end up doing, this is the part u want to
// pass this data to your repository (eg. RavenDb, Sql Server, etc)
// I'll use RavenDb in this example...
// And yes .. this is a contrite example. U might want to check for
// existing email or id or whatever u need to do, etc.
var myUser = Mapper.Map(model.AuthenticatedClient);
session.Store(myUser);
session.SaveChanges();
// SNIP SNIP SNIP SNIP
}
catch (Exception exception)
{
model.Exception = exception;
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
那么让我们来看看我做了什么.我已经删除了任何冗长的东西(价值检查等),这些只是这个SO答案中的噪音.
首先,我处理Authenticate回调.例如.我刚刚去Facebook,它说'是的!你是谁......它回到我的网站,有一些数据我已经要求它给我.
接下来......我们从Facebook获得了一些数据..但这可能不是我们想要的格式,在RavenDb中.所以我将它从旧格式转换为新的光泽User类,这是你将坚持你的Db.
第三 - 我将它存储在Db中. 这是您可以执行任何自定义数据库逻辑的地方
而已.
MODULARIZETHATSHIT
结束.
现在请原谅..在启示录前还有几个小时的时间.我必须做好准备.
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |