【发布时间】:2014-02-10 21:12:17
【问题描述】:
我在项目中使用基于角色的身份验证时遇到了问题。
我已经设置了一些角色并将它们链接到一个用户。
这行得通:
[Authorize]
public class UsersController : Controller
{}
如果我没有登录,它会要求我登录。
但是,如果我将其更改为:
[Authorize(Roles = "ManageUsers")]
public class UsersController : Controller
{}
我尝试从具有该角色的用户访问它它要求我登录。
所以我做了一些观察,发现了这个帖子:Link,他们建议添加:
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
在我的网络配置中。我这样做了,然后它允许我访问控制器。但我注意到,无论我是否担任该角色,它都可以让我访问控制器。
我正在为我的项目使用 Cookies 身份验证。所以我认为我对不同类型的身份验证感到困惑。
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
ExpireTimeSpan = TimeSpan.FromMinutes(5),
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
所以我需要一些关于从这里去哪里的建议:
我只是想利用默认项目实现的角色,我已经填充了数据库等。我只是无法让我的过滤器工作。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-identity owin role-base-authorization