如何利用DNN使用accessLevels

时间:2016-05-16 17:58:28

标签: authentication dotnetnuke

我正在使用DNN7.0.3。

这是我的服务控制器的一个例子:

[HttpPost]
[ValidateAntiForgeryToken]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Edit )]
//[DnnAuthorize(StaticRoles = "Registered Users")]
[SupportedModules("MyModuleName")]
public HttpResponseMessage UpdateWysUsersItem(BBWysUsersInfo item)
{
    BBWysUserProfileController controller = new BBWysUserProfileController();
    item = controller.UpdateWysUsersItem(item);
    return Request.CreateResponse(HttpStatusCode.OK, item);
}

在后面的ascx代码中我得到了

private void Page_Load(object sender, EventArgs e)
{  
   DotNetNuke.Framework.ServicesFramework.Instance.RequestAjaxAntiForgerySupport();
}

以主机(管理员)身份登录时,此服务正常运行,我的表内容也会更新。但是,当我以“注册用户”身份登录时,它会以“401 Unauthorized”消息失败。

更换

[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Edit )]

[DnnAuthorize(StaticRoles = "Registered Users")]

让它发挥作用。但是我不希望这只适用于静态角色“注册用户”。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我得到了答案,感谢DNNChat.com上的bdukes。 错误是我使用

[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Edit )]

这将授予对MODULE具有“编辑”权限的用户的访问权限! 但是,除了管理员,我不希望有这个。

因此,解决方案是使用:

[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View )]

这就是它的全部。 你知道的时候很简单。

谢谢@bdukes