如何为不同类型的用户实现自定义身份验证?

时间:2016-02-23 12:19:32

标签: c# asp.net-mvc authentication

让我们想象一下MVC Web应用程序将被3种类型的用户使用。

用户类型1和类型2将使用其 EMAIL 地址作为用户名登录系统,而用户类型3仅使用字母数字用户名登录,因为它们是不够老,无法获得电子邮件地址。

所有数据模型都将​​位于名为Business Objects Tier的单独库中,而数据访问将分离到数据访问层。主Web应用程序将调用业务服务类/存储库类以与数据库和业务逻辑交互。

项目的基本布局类似于以下内容。

enter image description here

现在我将如何为此布局实现自定义身份验证?我是否可以使用一个自定义身份验证系统来满足所有三类用户的需求?请您指点一个好的例子吗?

或者你认为我应该为每个用户类型将网络区域划分为三个单独的项目而不保留在一个网络项目中的区域下?通过这种方式,我可以使用普通的身份验证模型,但是我如何将这三个Web应用程序发布到一个域名中呢?但我不介意在一个域名下有三个独立的分支机构。

www.mycompany.myapp.com/usertypeone
www.mycompany.myapp.com/usertypetwo
www.mycompany.myapp.com/usertypethree

但是,我如何将这三个独立的Web项目部署到这三个分支中?我见过的所有自定义身份验证示例都使用简单的用户名和密码系统,但我找不到任何节目如何使用两者的组合。

2 个答案:

答案 0 :(得分:0)

在我发布我的问题后,我继续思考...... 也许我可以将我的网络区域分成三个独立的mvc项目(没有一个mvc项目下的区域),并且在这三个单独的项目中有3个不同的独立认证系统。然后,我可以将这三个单独的项目发布到一个域下的三个单独的子域中。 但我很想知道你对此的专家意见。

答案 1 :(得分:0)

我会坚持区域方法。

使用自定义AuthorizationFilter。一旦在全球注册,MVC将让您的过滤器决定请求是否被授权。您的过滤器可以使用正在访问的区域来执行该决定。

代码here

的更多信息

希望它有所帮助。

米克尔