在 MVC.NET 的 AuthorizeServices 中哪里可以设置角色?
我不知道我错过了什么,也不知道还需要读什么才能得到正确的结果。我将尝试这个灰色问题,看看我是否更接近解决方案。我正在构建一个 .NET MVC 应用程序。
该应用程序正在使用 DotNetOpenAuth 库通过 OpenID 进行身份验证,一切正常。一旦用户通过身份验证,我就会重新记录数据库中的 openid 令牌,并创建调用表单身份验证,如下所示。
FormsAuthentication.SetAuthCookie(confirmedUser.OpenID, false);
之后,该用户通过我的代码中的所有授权属性。如下所示:
[Authorize]
public ActionResult About()
{
return View();
}
我不知道在哪里为特定用户设置角色。我没有使用会员服务。
我需要使用如下属性:
[Authorize(Roles="Administrator")]
public ActionResult About()
{
return View();
}
I don't know what I am missing, and I don't know what else to read to get it right. I will try this gray question to see if I get closer to the solution. I am building a .NET MVC application.
This application is authenticating with OpenID using DotNetOpenAuth Library, all that is working ok. Once a user is authenticate I rebcord the openid token in the database and create call the forms authentication like below.
FormsAuthentication.SetAuthCookie(confirmedUser.OpenID, false);
After that this user pass all authorize attribute in my code. Like below:
[Authorize]
public ActionResult About()
{
return View();
}
I don't know where to set the roles for a specific user. I am not using the Membership services.
I need to get working the attributes like below:
[Authorize(Roles="Administrator")]
public ActionResult About()
{
return View();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先,不使用会员提供商对您有好处。这对于 OpenID 来说效果不佳。
要使角色在没有成员资格提供程序的情况下工作,您需要实现自己的从
System.Web.Security.RoleProvider
派生的类。它完全脱离了身份验证,这对您来说很容易。您只需在数据库中存储每个用户所属的角色,然后 RoleProvider 与该数据库进行交互。编写角色提供程序类后,将其与 web.config 文件中的该类连接起来。此代码段应出现在您的
system.web
部分中。这是我为 OpenID Web 应用程序编写的一个角色提供程序。它是使用 Linq to Entities 编写的,但您可以了解其想法并实现它以针对您的数据库工作。
First of all, good for you for not using a membership provider. That just doesn't work well with OpenID.
To make roles work without a membership provider, you need to implement your own class that derives from
System.Web.Security.RoleProvider
. It's completely departed from authentication, which makes it easy for you. You just need to store with each of your users in your database which roles they belong to, and then your RoleProvider interacts with that database.Once you write your role provider class, wire it up with this in your web.config file. This snippet should appear within your
system.web
section.Here's one role provider I wrote for an OpenID web application. It's written using Linq to Entities, but you can get the idea and implement it to work against your database.
我仍在学习这些东西,但您可能需要创建一个自定义授权属性。检查这个 。
I'm still learning this stuff as well, but you probably need to create a custom authorization attribute. Check this out.