如何设置后台管理员的权限详细请进来看
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置后台管理员的权限详细请进来看相关的知识,希望对你有一定的参考价值。
首先在数据库里把管理员权限设置两个.
一个:超级管理员
一个:管理员
然后,后台是一个窗口两个页面,超级管理员进的是一个页面,管理员进另一个页面
请问应该用什么代码!
首先进入后台展开会员中心。
点击"新增加会员用户",在这里可以增加新的用户,注册类型选择管理员即可。
也可以把普通会员(或其他组)的用户转到管理员组,以普通会员为例,我们点击(图1)的普通会员,进入会员管理界面。
我们只需要勾选需要转为管理员的用户,然后在类别转移里面转到管理员组即可。
接下来我们需要设置管理员的权限,点击(图1)的管理员组,进入管理员列表,我们给新增加的管理员设置一下管理权限即可。
在权限设置界面有两种权限,一种设置基本权限,一种设置信息投稿发布权限,如果对某个权限不熟悉,大家可以自己勾选一些权限,然后测试看效果来体会一下。 参考技术A 设置后台管理员的权限的步骤:
1、你在数据库表里加一个字段,比如字段名为:man 你可以把超级管理员的值用1表示,管理员用0表示,
然后例如:if man=1
form2.open
else man= 0
form3.open。
2、用Cookies或者Session设定指定账号的级别,进而控制它的操作权限。 参考技术B <%@language=vbscript codepage=936 %>
<!--#include file="Conn.asp"-->
<!--#include file="../Inc/Config.asp"-->
<!--#include file="inc/md5.asp"-->
<%
dim sql,rs
dim username,password,CheckCode
username=replace(trim(request("username")),"'","")
password=replace(trim(Request("password")),"'","")
CheckCode=replace(trim(Request("CheckCode")),"'","")
if UserName="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>用户名不能为空!</li>"
end if
if Password="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>密码不能为空!</li>"
end if
if CheckCode="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>验证码不能为空!</li>"
end if
if session("CheckCode")="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>你登录时间过长,请重新返回登录页面进行登录。</li>"
end if
if CheckCode<>CStr(session("CheckCode")) then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>您输入的确认码和系统产生的不一致,请重新输入。</li>"
end if
if FoundErr<>True then
password=md5(password)
set rs=server.createobject("adodb.recordset")
sql="select * from Admin where password='"&password&"' and username='"&username&"'"
rs.open sql,conn,1,3
if rs.bof and rs.eof then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>用户名或密码错误!!!</li>"
else
if password<>rs("password") then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>用户名或密码错误!!!</li>"
else
RndPassword=GetRndPassword(16)
rs("LastLoginIP")=Request.ServerVariables("REMOTE_ADDR")
rs("LastLoginTime")=now()
rs("LoginTimes")=rs("LoginTimes")+1
rs("RndPassword")=RndPassword
rs.update
session.Timeout=SessionTimeout
session("AdminName")=rs("username")
session("AdminPassword")=rs("Password")
session("RndPassword")=RndPassword
rs.close
set rs=nothing
call CloseConn()
Response.Redirect "default.asp"
end if
end if
rs.close
set rs=nothing
end if
if FoundErr=True then 参考技术C 如果是超级管理员的话就进行超连接location.href="";里面写连接的路径
如果是管理员一样的道理
当然跳转叶面有许多中方式
如果是JSP页面的话可以用response.sendrection("跳转的路径");
如果是sevlet叶面的话也可以用这样的方法跳转
也可以用request.RecendCript("").forward.(request,resopnse);
但是前提是必须要要有那两个页面 参考技术D 你在数据库表里加一个字段,比如字段名为:man 你可以把超级管理员的值用1表示,管理员用0表示,
然后例如:if man=1
form2.open
else man= 0
form3.open
网站后台系统权限部分实现
基本上所有网站都有后台管理系统。系统根据业务划分成不同的系统角色。而每个角色肯定是拥有着不同的权限。这个权限就根据登录后功能菜单的多少来体现。
那么这是如何实现的呢?
在刚开始接触这方面的时候,意识到权限问题,自己随手写的练手项目是将帐号表中设置一个权限字段。比如1代表超级管理员,2代表普通用户种种。用户登录进来的时候,页面里用jstl标签判断权限类型,渲染不同的静态页面。这种方法确实是可行的。但是如果后期需要增加菜单,那么就需要更改代码,或者是增加角色,也需要更改代码。如果后期有一点点变动,都需要重新对代码进行更改。
后来,看到了另一个项目,权限是这么实现的。
用于角色权限的一般设计有五张表,权限表、角色表、用户表、用户角色表、角色权限表。
1.权限表 一般设计有 id pid name code zindex page description generatemenu 字段,用来生成菜单树结构。
2.角色表 用于存储角色类型,如 超级管理员角色、普通用户等。
3.用户表 实际上就是User表,用于存储用户信息。
4.用户角色表 是角色表和用户表的关联表,多对多的关系。一个角色可对应于多个用户,一个用户也可以对应于多个角色。
5.角色权限表 是角色表和权限表的关联表,多对多的关系。一个角色拥有多个权限,一个权限也可以被多个角色拥有。
如果存在资源表 则 再加 资源表和资源角色表共七张表,不过一般是上述五表。
系统菜单一般是怎么实现的呢?
_____________________________________________
这里涉及到apache shiro框架。
//apache shiro简要介绍
它的核心功能有:认证、授权、会话管理、加密。
l shiro框架认证流程
Application Code:应用程序代码,由开发人员负责开发的
Subject:框架提供的接口,代表当前用户对象
SecurityManager:框架提供的接口,代表安全管理器对象
Realm:可以开发人员编写,框架也提供一些,类似于DAO,用于访问权限数据
使用过程:
1.maven工程的话,导入依赖
2.web.xml中配置spring整合的过滤器shiroFilter 对应的class为DelegatingFilterProxy
3.spring中配置bean id为shiroFilter
4.配置安全管理器
5.login方法进行登录认证
6.自定义Realm,并注入给安全管理器
public class BOSRealm extends AuthorizingRealm{
@Autowired
private IUserDao userDao;
//认证方法
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
System.out.println("realm中的认证方法执行了。。。。");
UsernamePasswordToken mytoken = (UsernamePasswordToken)token;
String username = mytoken.getUsername();
//根据用户名查询数据库中的密码
User user = userDao.findUserByUserName(username);
if(user == null){
//用户名不存在
return null;
}
//如果能查询到,再由框架比对数据库中查询到的密码和页面提交的密码是否一致
AuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), this.getName());
return info;
}
//授权方法
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
// TODO Auto-generated method stub
return null;
}
以上是登录认证(参考黑马视频bos项目文档)
_____________________________________________
而授权是怎么完成的呢?
权限拦截一般有几种方法,上述在spring中根据规则过滤是一种,还有方法注解是一种,页面shiro标签库拦截也是一种。一般使用spring过滤。
路径是这样:用户登录进来后,ztree会根据用户角色查询角色权限表,生成功能菜单树。当进入某一页面时,页面有删除按钮,如果前台页面没有进行判断是否显示,那么点击之后,系统会根据applicationContext.xml配置的过滤规则进行拦截,如果是perms拦截,进入到自定义Realm中,执行授权方法
授权方法是给用户授予权限,执行完毕后。shiro会自动判断该用户是否拥有 配置的权限,若没有则抛出未授权异常。
——————————————————————————————————————————
但是每次访问都会执行授权方法,产生效率问题。
这里采用 ehcache 来缓存权限数据
ehcache是专门缓存插件,可以缓存Java对象,提高系统性能。
使用方法:
1.导入依赖
2.提供ehcache配置文件。
3.spring配置缓存管理器对象,并注入给安全管理器。
——————————————————————————————————————
补张shiro图
以上是关于如何设置后台管理员的权限详细请进来看的主要内容,如果未能解决你的问题,请参考以下文章