wil*_*lvv 8 authentication asp.net-mvc facebook login
我正在创建一个新网站,我希望用户能够使用多种方式登录,基本上用户应该能够在我的网站上创建新用户或使用Facebook连接或使用Twitter的帐户登录该网站.
我已经看过几个关于使用这些方法之一的教程,我想知道的是你认为最好的方法是什么?
到目前为止,我认为最好的方法是创建自定义身份验证模型(类似于对现有授权类进行子类型化).
这是最好的方法吗?你能指点一个尝试类似事情的人的好例子吗?
非常感谢
我最近写了类似的东西...这是我采取的方法
public class User {
public int UserID { get; set; }
public string Name { get; set; }
public string Page { get; set; }
public virtual Authentication Authentication { get; set; }
}
public class Authentication {
public int Id { get; set; }
public string LoginId { get; set; }
public string Provider { get; set; }
public string Password { get; set; }
public virtual User User { get; set; }
}
//login methods
User StandardUserLogin(string username) {
IDataContext db = new DataContext();
var user = db.Users.SingleOrDefault(u => u.Authentication.LoginId == username);
if (user != null) {
if (user.Authentication.Password == password) {
SetAuthenticationTicket(user);
return user;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我会为每种类型的登录创建不同的登录方法,具体取决于其授权方案的工作方式.
User OpenIdUserLogin(string username) {
IDataContext db = new DataContext();
var user = db.Users.SingleOrDefault(u => u.Authentication.LoginId == username && u.Authentication.Provider == "openid");
if (user == null) {
//create new openid user
}
if (user.Authentication.LoginId == id) {
SetAuthenticationTicket(user);
return user;
}
}
//openid's authentication method
[ValidateInput(false)]
public ActionResult Authenticate(string returnUrl) {
IAuthenticationResponse response = OpenId.GetResponse();
if (response == null) {
//make openid request here
} else {
var user = OpenIdUserLogin(response.ClaimedIdentifier);
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这两个班在顶部代表我的实体框架波苏斯这里的关键是认证表是从用户表分开.它允许一个用户在签约的多种方法.希望这可以帮助你得到你的轨道上.
| 归档时间: |
|
| 查看次数: |
1688 次 |
| 最近记录: |