asp.net-mvc – 在Asp.Net MVC中使用混合身份验证(Forms,FB connect,twitter,openId)

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在Asp.Net MVC中使用混合身份验证(Forms,FB connect,twitter,openId)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个新网站,我希望用户能够使用多种方式登录,基本上用户应该能够在我的网站上创建新用户或使用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;
        }
    }
}

我会为每种类型的登录创建不同的登录方法,具体取决于其授权方案的工作方式.

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);
    }
}

顺便说一句,顶部的两个类代表我的实体框架POCO这里的关键是身份验证表,它与用户表分开.它允许一个用户拥有多种登录方式.希望这可以帮助您实现正常运行.

原文链接:https://www.f2er.com/aspnet/248455.html

猜你在找的asp.Net相关文章