添加ExpandFramework安全模块后XAF非管理员用户导航消失问题咨询
解决XAF添加ExpandFramework安全模块后非管理员导航消失的问题
Hey there! 作为也踩过ExpandFramework安全模块坑的XAF开发者,我来给你捋捋几个容易漏掉的配置点,大概率能解决你的导航消失问题:
检查角色的导航权限设置
ExpandFramework的安全模块对导航项的权限控制比原生XAF更细致,默认情况下非管理员角色是没有任何导航访问权限的。你需要手动给角色分配导航项权限:打开角色编辑界面,切换到「权限」标签页,添加新的权限记录,权限类型选择NavigationItem,指定对应的导航项路径,然后把权限设置为Allow。别嫌麻烦,这步是最容易被忽略的!确认模块注册顺序
在你的模块项目(Module.cs)里,一定要保证ExpandSecurityModule是在XAF原生的SecurityModule之后注册的。如果顺序搞反了,权限逻辑会冲突,直接覆盖掉你之前的导航配置。正确的注册代码应该是这样的:
// 先注册原生安全模块,再注册ExpandFramework的安全模块 RequiredModuleTypes.Add(typeof(SecurityModule)); RequiredModuleTypes.Add(typeof(ExpandSecurityModule));
- 启用自动生成导航权限(可选)
有些版本的ExpandFramework安全模块支持根据角色的对象权限自动生成导航权限,能省不少手动配置的功夫。你可以在模块的Setup方法或者应用启动代码里开启这个选项:
// 开启自动导航权限生成 ExpandSecurityOptions.Instance.AutoGenerateNavigationPermissions = true;
不过要注意,这个功能生效的前提是角色已经拥有对应业务对象的访问权限,不然导航项还是会被隐藏。
验证导航项的可见性规则
ExpandFramework会扩展导航项的可见性控制逻辑,你可以打开模型编辑器,检查每个导航项的IsVisible属性,看看有没有被自定义规则意外设为不可见,或者有没有关联的安全规则限制了它的显示。确认用户角色分配的完整性
最后再检查一遍:非管理员用户是不是真的被分配了正确的角色?有没有可能在添加模块后,角色的权限被意外重置了?有时候模块更新会导致权限配置被覆盖,重新确认一下准没错。
内容的提问来源于stack exchange,提问作者Daniel Blessing
相关产品推荐
相关产品推荐

