更新:尝试使用角色,同样的问题。我在Manage / Index /上打印我的角色:它显示我既是超级用户又是授权用户,但是我看不到隐藏在@if (User.IsInRole("SuperUser")){ <html> }
中的Razor页面的部分,也无法访问控制器受[Authorize(Roles = "AuthorizedUser")]
尝试使用内置框架保护Asp.Net MVC的部分内容。我现在正在使用标准.NET Framework多用户身份验证模板。
我希望用户能够运行除了SettingsController中的Admin之外的大部分内容。
[Authorize(Users = @"admin@mycompany.com")]
使用该电子邮件注册一个帐户,复制导航栏中返回的@ User.Identity.Name并将其粘贴到Authorize属性中,如上所示。
然而,当我登录并尝试访问Controller时,我被重定向到登录字段,就好像我根本没有登录一样。我在字符串前面和没有@的情况下尝试过它,我只用电子邮件的“管理员”部分试了一下......我究竟需要把它放到那个字符串中才能工作?在线示例通常只包含简单的名称,如下所示:
[Authorize(Users="Alice,Bob")]
public class RestrictedContentController : Controller
{
. . .
}
但标准模板没有用户名。 User.Identity.Name返回电子邮件地址......我该怎么办?
答案 0 :(得分:0)
发现问题:
我没有定义RoleManager。我只是手动实例化一个角色并将其添加到映射表中。不确定为什么它不起作用但是一旦我定义了一个角色管理器,通过Owin Context加载它,在角色管理器中创建角色然后在用户管理器中添加它我能够访问[授权]控制器功能。