我刚刚花了两天时间研究并使用现有数据库实现新的 ASP.NET Identity 系统。更多信息请参见这里:将 ASP.NET Identity 集成到现有的 DbContext 中.
现在,我有一份工作UserStore
and RoleStore
,但我似乎无法弄清楚如何在我的 ASP.NET MVC 5 应用程序中利用它们,而不编写像所有让我困惑的 Identity 示例中那样的大量代码。
我想要实现两件事:1)使用 cookie 来维护授权,2)使用角色来限制应用程序对视图和控制器中呈现的内容的访问。
为了能够使用这些,我显然需要使用Controller.User
代表授权用户的属性并查看其角色。我如何让我的身份实现来实现这一点?
最后,在 Identity 示例中,我看到他们正在使用 OWIN,我对此有所了解,但似乎这是一种超级迂回的方式,我仍然不知道如何正确实现。就索赔而言,它们让我困惑的程度是我理解的程度的两倍。
如果有任何正确方向的指示,我将不胜感激。
回到这个问题后,我想我找到了一个简单有效的解决方案。我最终为 OWIN 创建了一个启动配置类。据我了解,由于 OWIN 是一个中间件,它会拦截请求,计算出身份验证(如果有),并更新User
的财产Controller
类在哪里User
是一个实例ClaimsIdentity
class.
之后,其他一切都将像您通常使用的那样工作User
ASP.NET 的属性。我确实用一个名为的额外属性扩展了我的基本控制器UserId
它解析了User
属性来获取数据库中使用的实际 Id。我的目的是让我可以查询真实的 IDEmployee
我的班级DbContext
用途。我们会看看它是否保留,同时,这是我的代码StartupConfiguration
:
public sealed class StartupConfig {
public void Configuration(
IAppBuilder app) {
this.ConfigureAuthentication(app);
}
public void ConfigureAuthentication(
IAppBuilder app) {
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/"),
ExpireTimeSpan = new TimeSpan(0, 60, 0)
});
}
}
这是我的配置方式UserId
财产:
protected int UserId {
get {
return Convert.ToInt32(base.User.Identity.GetUserId());
}
}
不要忘记用以下内容来装饰班级[assembly: OwinStartupAttribute(typeof(namespace.StartupConfig))]
。希望这对某人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)