我正在使用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")]
让它发挥作用。但是我不希望这只适用于静态角色“注册用户”。
我在这里做错了什么?
答案 0 :(得分:0)
我得到了答案,感谢DNNChat.com上的bdukes。 错误是我使用
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Edit )]
这将授予对MODULE具有“编辑”权限的用户的访问权限! 但是,除了管理员,我不希望有这个。
因此,解决方案是使用:
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View )]
这就是它的全部。 你知道的时候很简单。
谢谢@bdukes