如何单独备份dz版块设置某个版块的阅读权限

手机/移动建站
HTML5/CSS3布局、矢量图标、更细腻更轻巧
微官网、微投票、微商城、微报名等应有尽有
通过我们的努力让您的产品/服务在互联网上曝光
更多服务项目
服务热线:3
如遇占线或暂未接听请拨: /
微信公众号
您可能遇到的问题?
【最新公告】
搜索微构网络的干货:
地址:长沙市五一西路锦绣中环1116(五一广场平和堂对面)查看: 2115|回复: 5
请问如何设置游客可以浏览板块,但是不能查看帖子内容呢?
本帖最后由 加楽 于
17:34 编辑
比如我有个【新手报到】的版块,我想设置游客可以点击进入该板块,可以看到这个板块里面的帖子列表,但是点击标题名称进去,就提示无权限,必须注册成为会员才可以查看内容,该如何设置呢?
板块权限设置里只有下面这些,没具体争对查看帖子的权限设置,
下载附件/查看图片
上传图片& && && && &&&
阅读权限设置为1,然后板块该设置如下:
QQ截图50.jpg (18.89 KB, 下载次数: 0)
17:18 上传
QQ截图01.jpg (6.15 KB, 下载次数: 0)
17:24 上传
这样就板块帖子列表都不能浏览了,我的本意是该板块帖子列表可以浏览,但帖子需要登录才能浏览,怎么设置呢?
详见:幽默网 幽默人社区
本帖最后由 加楽 于
18:06 编辑
发贴时可以在贴子加上权限
本帖最后由 快乐崇拜 于
18:24 编辑
在游客用户组,阅读权限:0
快乐崇拜 发表于
在游客用户组,阅读权限:0
设置阅读权限为0?那就所有板块都统一不能查看了呀,我是想某个特定板块不能查看帖子,但大部分还是有需要的
游客 阅读权限 0&&
版块权限 【新手报到】的版块 全不勾选
其它 版块 勾选 有权限 用户组
Powered by13902人阅读
&&&&&&&&&&&
博客分类:
转载: .cn/post_show.asp?id=7873
作者:佚名&&
随着.NET 和J2EE 开发平台的推出,传统的软件开发模式开始向B/S 模式转变,这种转变给系统的安全性提出了更高的要求,B/S 模式下,由于HTTP 协议和浏览器的特殊性,可能会造成信息的泄漏甚至使非法用户修改数据。而权限的设置、分配与管理是任何一个系统必不可少的功能。如何设计与实现其功能,目前有多种方案,传统的访问控制方法DAC (Discretionary Access Control ,自主访问控制模型)、MAC (Mandatory Access Control ,强制访问控制模型)难以满足复杂的企业环境需求。本文采用了现在流行的基于角色访问控制(RBAC
,Role Based Access Control )的基本思想,巧妙地利用了Web 控件TreeView 及ASP.NET 技术,设计了在B/S 模式下,根据不同的用户,不同的角色权限,动态生成用户菜单树的一种具体实现方法。&
&&&& 本文将先介绍RBAC 的基本思想,在此基础上,给出在ASP.NET 中的具体实现方法。&
二、角色访问控制(RBAC)的基本思想 &
图1  RBAC 的基本思想&
在RBAC 中,许可Permissions (特权)就是允许对一个或多个客体执行的权力,角色就是许可的集合,如图1 所示。RBAC 的基本思想就是把整个访问过程分为两步:访问权限与角色关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。&
RBAC 对访问权限的授权由系统管理员统一管理,系统管理员根据单位中不同的岗位定义不同的角色,用户根据其职能和责任被赋予相应的角色。一旦用户成为某角色的成员,则此用户可以完成该角色所具有的职能。&
&&&&&& 由于RBAC 实现了用户与访问权限的逻辑分离,因此它极大地方便了权限管理的复杂性。可根据用户的实际工作岗位将用户与角色关联,一方面定义角色、增加删除角色中的用户易于操作,另一方面,可以通过更改角色的权限实现大批量用户权限的更新。在实际应用中,由于角色/ 权限之间的变化比用户/ 角色之间的变化要慢得多,当一个用户的职位发生了变化,只要将用户当前的角色去掉,加入代表新职务的角色即可。因此,RBAC 的优点是明显的,更符合企业的应用特征。&
三、用户权限菜单树&
用TreeView 控件动态实现用户权限菜单树的基本思想是:根据角色访问控制(RBAC )的基本原理,给用户分配不同的角色,每个角色对应一些权限,然后根据用户ID 获取用户对应的角色集合,由角色集合获取对应的权限集合,再由权限集合利用TreeWiew 控件动态生成一棵由该用户对应的角色能访问的页面(模块)组成的权限树。这样,用户无权访问的页面在权限菜单树就不会出现,不同的用户进入的界面不同,实现了用户权限的统一管理。&
&&&&& 下面从功能模块设计、数据库设计、架构设计等几方面来阐述其实现过程。&
1& .功能模块划分 &
图2  用户权限管理功能模块图&
用户权限管理系统功能如图2 所示,其中主要模块功能阐述如下:&
用户管理模块分为:删除用户、浏览用户和角色分配三个子模块,主要负责各类用户的删除、合法性验证及为用户分配角色。用户管理模块中并没有增加用户子模块的功能,主要是由用户注册模块来实现的。&
&&&&&& 权限管理模块分为:角色管理和访问控制两个子模块。角色管理负责管理各类角色(增、删、改),为角色授予相应信息服务模块的使用权限,删除角色的某个模块的 使用权限等;访问控制是保证信息安全的关键,用户登录时经身份验证后,系统根据用户具有角色的信息服务模块的使用权限自动生成访问权限集,使得用户能够访 问授权的信息,拦截对没有授权信息服务的访问。&
2.& 数据库设计 &
&&&&&&&& 在实施RBAC 生成用户权限菜单树时,为了提高系统管理及数据访问的效率,在数据库中设计了用户表(表1 所示)、角色表(表2 所示)、用户角色表(表3 所示)、角色权限表(表4 所示)及菜单树结构表(表5 所示)共5 个表。&
表1 用户信息表Users&&
字段中文名&
用户ID 主键&
Varchar(50)&
Varchar(100)&
用MD5 加密&
Varchar(50)&
用户真实姓名&
Varchar(100)&
用户Email&&
用户状态,默认:0&&
保留,默认:1&&
表2 角色信息表Roles&&
字段中文名&
角色ID 主键&
Varchar(20)&
用MD5 加密&
Varchar(50)&
PerMission&
Varchar(50)&
保留,默认:1&&
表3 用户角色表UserRoles&&
字段中文名&
表4 角色权限表RolePermissions&&
字段中文名&
父菜单ID&&
表5 菜单树结构表Tree&&
字段中文名&
菜单ID 主键&
Varchar(200)&
菜单父ID&&
Varchar(200)&
菜单链接地址&
Web 程序中,将系统功能模块组织成树型结构,每个模块对应一个菜单,菜单之间的父子关系直接反映了模块之间的父子关系,在数据库中用一张表Tree 来存储这种结构。&
5 个表的关系如图3 所示。&
图3  5 个表之间的关系图&
3.& 系统架构设计 &
B/S 模式下,采用三层结构:表示层、逻辑层及数据层。为了编程方便,把数据层分为实体层和数据访问层,把打开、关闭数据库及调用存储过程的代码全部封将在数据访问类SQLHelper.cs 中。实际应用中采用的是四层结构,系统架构设计如图4 所示。&
图4  用户权限管理架构图&
注:图4 中的箭头为调用关系。&
为了提高程序的执行效率,所有的数据操作都是通过类SQLHelper.cs 调用存储过程来实现的。&
实体层的几个主要类及关键方法如下:&
(1 )用户类User :&
GetUserLogin(string sUserName,string sPassword) :用户登录验证。&
GetRoleByUser(int nUserID) :由用户ID 返回该用户所有的角色集。&
&&& AddUserRole(int nUserID,int nRoleID):&
&&& 为用户分配角色。&
  GetUserPermissionList( int userID ) :得到用户的所有权限集。&
(2 )角色类RoleEntity :&
AddRoleModule(int nTreeID,int nRoleID) :为角色分配权限。&
   DeleteRoleModule(int nRoleID) :删除角色拥有的权限。&
   GetModuleByRole(int nRoleID) :由角色ID 得到该角色的权限集。&
(3 )权限树类Tree :&
BindTree(TreeView treeView,int userID): 生成树目录。&
CreateChildNode(TreeNode parentnode,DataTable dataTable) :递归函数生成树结点。&
GetTreesByUserID(int nUserID) :由用户ID 得到用户权限集动态生成用户权限树。&
(4 )用户权限检查类CkeckAuthority :&
  ChkPermission( int userID ) :检查用户是否有访问权限。&
IsInRole(int roleID) :检查角色是否存在。&
4& .具体实现 &
在树型结构中,给角色授权时采取简单方式,每次授权时,将其对应的RoleID 、TreeID 及ParentID 存入RolePermissions 表中,见图5 。&
图5  角色授权&
要实现动态生成用户菜单树,在ASP.NET 开发环境中必须安装微软的IE  Web 控件(可到微软的网站免费下载),安装完成后,在开发环境中引用Microsoft.Web.UI.WebControls.dll ,这样在开发环境的工具箱中将会出现MutiPage 、TabStrip 、Toobar 和TreeView 等IE  Web 控件。&
将IE  Web 控件TreeView 添加到Web 页分以下两步:&
(1 )在页面顶端添加以下@Register 指令:&
&%@Register TagPrefix=”iewc”&&
Namespace=” Microsoft.Web.UI.WebControls”&
Assembly=” Microsoft.Web.UI.WebControls” %&&
(2 )在Web 页中需显示TreeView 的位置添加以下Web 控件语法:&
&iewc:TreeView runat=”server” …&&
&/ iewc:TreeView&&
关于TreeView 控件的用法,读者可参看相应的书籍。&
总体架构页面包括用户登录(Longin.aspx )和主界面(Default.aspx )两个部分。&
主界面分为三个部分:上部分为标题条(Head.aspx) ,左部分为菜单目录树(LeftTree.aspx ),右部分主框架(MainFram.aspx )。其中LeftTree.aspx 页面含TreeView 控件,用户单击树中的菜单结点就可打开相应的操作页面。&
&&&&&& 用户登录采用窗体式验证,负责提供用户的身份验证。然后根据用户在系统中所扮演的角色,取出该用户对应的权限集,动态生成该用户对应本系统的操作权限树(见图6 )。&
图6  用户访问权限示意图&
登录体Login.aspx 中的主要代码如下:&
private&void&LoginBtn_Click(object&sender,&System.EventArgs&e)&&&&{&&&&if(Page.IsValid&==&true)&&&&{&&&&&&&&Entity.User&user=new&User();&&&&&&&&string&userId&=&&&;&&&&&&&&string&isValid=&&;&&//用户的合法标志&&&&&&&&//用户身份鉴别&&&&&&&&SqlDataReader&recs&=&user.GetUserLogin(UserName.Text.Trim(),&&&&Entity.User.Encrypt(Password.Text.Trim()));&&&&if(recs.Read())&&&&&&&&{&&&&&&&&&&userId&=&recs[&UserID&].ToString();&&&&&&//取到用户的合法标志&&&&&&isValid=recs[&State&].ToString();&&&&&&&&}&&&&&&&&recs.Close();&&&&&&&&if(isValid==&0&)&&&&//用户没有被系统管理同确定,转向访问拒绝面&&&&{Response.Redirect(&AccessDenied.aspx&);}&&&&if((userId&!=&null)&&&&(userId&!=&&&))&&&&{&Session[&UserID&]&=userId;&&&&Entity.CkeckAuthority&chkau=&&&&new&CkeckAuthority();&&&&//用户访问权限检验&&&&if(!chkau.ChkPermission(Int32.Parse&&&&(Session[&UserID&].ToString())))&&&&{&//&如无权限直接转向访问拒绝面Response.Redirect(&AccessDenied.aspx&);}&&&&else&&&&{//用户有访问权限,创建用户名,密码验证的票据&&&&FormsAuthenticationTicket&ticket&=&&&&&new&FormsAuthenticationTicket(&&&&&&&&1,&&//&version&版本&&&&UserName.Text.Trim(),&//&用户cookie名&&&&DateTime.Now,&&&&&&//&发布日期&&&&DateTime.Now.AddHours(1),//过期日期&&&&&&&&false,&&&&&&&//cookie&持久性(false)&&&&Password.Text.Trim()&&//&&用户密码&&&&);&&&&&&&&//&加密票据&&&&String&cookieStr&=&FormsAuthentication.Encrypt(ticket);&&&&//&将存有用户名、密码信息的字符串存入cookie&&&&Response.Cookies[&userticket&].Value&=&cookieS&&&&Response.Cookies[&userticket&].Path&=&&/&;&&&&Response.Cookies[&userticket&].Expires&=&DateTime.Now.AddMinutes(1);&&&&//跳转到由用户权限动态生成的主页面Response.Redirect(&Default.aspx&);&}&&&&}&&&&else&&&&{&&UserName.Text&=&&&;&&&&&&&&Password.Text&&=&&&;&&&&&&&&Message.Text&=&&你输入的用户名称或者密码有误,请重新输入!&;&&&&}&&&&}&&&&}&&&&&&&&LeftTree.aspx中的主要代码如下:&&&&private&void&Page_Load(object&sender,&System.EventArgs&e)&&&&&&&&{&&&&&&&…&&&&&&&&&&if(!Page.IsPostBack)&&&&&&&&{&//&实例化一个树对象&&&&&&&&&&&&Tree&tree&=&new&Tree();&&&&&&&& //动态创建树型菜单,参数ModuleTview为TreewView控件对象&&&&tree.BindTree(ModuleTview,Int32.Parse(Session[&UserID&].ToString()));&&&&&&&&…}&&&&}&&
private void LoginBtn_Click(object sender, System.EventArgs e){if(Page.IsValid == true){
Entity.User user=new User();
string userId = &&;
string isValid=&&;
//用户的合法标志
//用户身份鉴别
SqlDataReader recs = user.GetUserLogin(UserName.Text.Trim(),Entity.User.Encrypt(Password.Text.Trim()));if(recs.Read())
userId = recs[&UserID&].ToString();
//取到用户的合法标志
isValid=recs[&State&].ToString();
recs.Close();
if(isValid==&0&)
//用户没有被系统管理同确定,转向访问拒绝面{Response.Redirect(&AccessDenied.aspx&);}if((userId != null) && (userId != &&)){ Session[&UserID&] =userId;Entity.CkeckAuthority chkau=new CkeckAuthority();//用户访问权限检验if(!chkau.ChkPermission(Int32.Parse(Session[&UserID&].ToString()))){ // 如无权限直接转向访问拒绝面Response.Redirect(&AccessDenied.aspx&);}else{//用户有访问权限,创建用户名,密码验证的票据FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
// version 版本UserName.Text.Trim(), // 用户cookie名DateTime.Now,
// 发布日期DateTime.Now.AddHours(1),//过期日期
//cookie 持久性(false)Password.Text.Trim()
用户密码);
// 加密票据String cookieStr = FormsAuthentication.Encrypt(ticket);// 将存有用户名、密码信息的字符串存入cookieResponse.Cookies[&userticket&].Value = cookieSResponse.Cookies[&userticket&].Path = &/&;Response.Cookies[&userticket&].Expires = DateTime.Now.AddMinutes(1);//跳转到由用户权限动态生成的主页面Response.Redirect(&Default.aspx&); }}else{
UserName.Text = &&;
Password.Text
Message.Text = &你输入的用户名称或者密码有误,请重新输入!&;}}}
LeftTree.aspx中的主要代码如下:private void Page_Load(object sender, System.EventArgs e)
if(!Page.IsPostBack)
{ // 实例化一个树对象
Tree tree = new Tree();
 //动态创建树型菜单,参数ModuleTview为TreewView控件对象tree.BindTree(ModuleTview,Int32.Parse(Session[&UserID&].ToString()));
此外,为了防止非法用户直接绕过登录验证窗体而在网址中直接输入访问路径进行非法访问,利用ASP.NET 中的用户控件,直接将票据验证、角色验证封装在用户控件CheckUserAuth.ascx 中,在每一个受控的页面中加入用户控件CheckUserAuth.ascx ,若为非法用户直接转向拒绝访问页AccessDenied.aspx ,这样使得系统更加安全可靠。有关Web.config 中基于Forms 验证的配置方法,本文不再赘述。&
运行效果:&
角色分别为成绩管理员和系统管理员的菜单树如图7 和图8 所示。&
图7  角色为成绩管理员的菜单树&
图8  角色为系统管理员的菜单树&
四、结语 &&
在B/S 模式下,信息系统的安全设计有了新的需求,相对于传统的C/S 应用程序,B/S 应用程序对安全性提出了更高的要求,不但要考虑数据访问的安全性,还要考虑网络的安全性。&
本文以RBAC 的思想,采用多层架构,利用TreeView 控件及ASP.NET 技术,设计了一个根据不同的用户不同的角色权限,动态生成用户权限树的方法,该方法高效、安全,用户只能操作有权限的模块,无权限的模块对用户不可见,不同的用户所进入的界面不同,提高了系统的安全性和可靠性。利用本文的方法,可以迅速构建一个安全、高效的B/S 方式管理信息系统。&
&&&&&&&& 笔者用微软的Visual Studio.NET 作为开发平台,SQL Server& 作为数据库,按
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:42730次
排名:千里之外
转载:16篇
(1)(1)(1)(1)(5)(1)(1)(13)(1)查看: 1630|回复: 2
discuz3.2在哪里设置某一个版块只有特定用户才能发帖?
马上注册,结交更多好友,享用更多功能,让您轻松玩转资讯
才可以下载或查看,没有帐号?
找了好久都没找到,管理教下我,谢谢了
上一篇:下一篇:
感谢大家一直以来对飞吧资源网的支持!
进后台,大导航选择,然后是,选定要设置的板块,点击编辑。
然后你会看到1个 “权限相关”& & 再然后&&我估计你应该知道怎么弄了
& & & & & & & & & & & & & & & &
感谢大家一直以来对飞吧资源网的支持!
谢谢楼上的,解决了
感谢大家一直以来对飞吧资源网的支持!
工作时间:9:00-22:00
客服热线:158-
官方微信扫一扫
本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
Copyright &
飞吧资源网
() All Rights Reserved.
网站备案信息:(}

我要回帖

更多关于 单独备份dz版块 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信