cms-登陆

先介绍下登陆的思路:

1.在登陆页面首先前端验证用户名和密码是否正确,如果验证通过,则ajax的方式向后台提交数据。

2.在controller层,将得到的用户名名和密码封装进shiro的token,在提交token过程中如果成功则登陆成功,如果出现异常则登陆失败,并且把登陆情况发送回登陆页面

3.controller层执行subject时候调用realm,realm里面有俩个函数,一个验证权限一个验证身份,在此调用验证身份的函数。在token中得到传过来的用户名,根据用户名查询与该用户名对应的数据,

把查询得到的数据与token做对比,如果正确则登陆成功,如果失败则登陆失败,最后将信息存放在session中

---------------------------------------------------------------------

1.login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!doctype html>
<html lang="en" class="login-content" data-ng-app="materialAdmin">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="Generator" content="EditPlus?">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>管理员登录界面</title>
<!-- Vendor CSS -->
<link href="${pageContext.request.contextPath}/static/login/css/material-design-iconic-font/css/material-design-iconic-font.min.css" rel="stylesheet" type="text/css">
<!-- CSS -->
<link href="${pageContext.request.contextPath}/static/login/css/app.min.1.css" rel="stylesheet" type="text/css">
<script type="text/javascript">

function submitData(){
var userName=$("#userName").val();
var password=$("#password").val();
if(userName==""){
alert("请输入用户名!");
return;
}
if(password==""){
alert("请输入密码!");
return;
}
$.post("${pageContext.request.contextPath}/manager2/login.do",{userName:userName,password:password},function(result){
if(result.success){
alert("登录成功");
}else{
alert(result.errorInfo);
}
},"json");
}

</script>
</head>
<body class="login-content" data-ng-controller="loginCtrl as lctrl">

<div class="lc-block" id="l-login" data-ng-class="{‘toggled‘:lctrl.login === 1}">
<h1 class="lean">Login</h1>

<div class="input-group m-b-20">
<span class="input-group-addon">
<i class="zmdi zmdi-account"></i>
</span>
<div class="fg-line">
<input type="text" id="userName" name="userName" class="form-control" placeholder="userName" regex="^\w{3,16}$"/>
</div>
</div>

<div class="input-group m-b-20">
<span class="input-group-addon">
<i class="zmdi zmdi-male"></i>
</span>
<div class="fg-line">
<input type="password" id="password" name="password" class="form-control" placeholder="password" regex="^\w+"/>
</div>
</div>

<div class="clearfix"></div>

<div >
成都金广通科技有限公司版本所有 2012-2016
</div>

<a href="javascript:submitData()" class="btn btn-login btn-danger btn-float">
<i class="zmdi zmdi-arrow-forward"></i>
</a>

</div>

</body>

<script src="${pageContext.request.contextPath}/static/login/js/bower_components/jquery/dist/jquery.min.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/log.js"></script>
<!-- Angular -->
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/angular/angular.min.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/angular-resource/angular-resource.min.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/angular-animate/angular-animate.min.js"></script>

<!-- Angular Modules -->
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/angular-loading-bar/src/loading-bar.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/oclazyload/dist/ocLazyLoad.min.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>

<!-- Common js -->
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/angular-nouislider/src/nouislider.min.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/bower_components/ng-table/dist/ng-table.min.js"></script>

<script src="${pageContext.request.contextPath}/static/login/js/app.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/controllers/main.js"></script>
<script src="${pageContext.request.contextPath}/static/login/js/controllers/ui-bootstrap.js"></script>

<!-- Template Modules -->
<script src="${pageContext.request.contextPath}/static/login/js/modules/form.js"></script>
</html>

------------------------------------------------------------------------------------

controller

package com.open1111.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.open1111.entity.Manager;
import com.open1111.service.ManagerService;
import com.open1111.util.Md5Util;
import com.open1111.util.ResponseUtil;

import net.sf.json.JSONObject;

/**
* 管理员Controller层
* @author user
*
*/
@Controller
@RequestMapping("/manager2")
public class ManagerController {

@Resource
private ManagerService managerService;

/**
* 用户登录
* @param manager
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/login")
public String login(Manager manager,HttpServletResponse response)throws Exception{
Subject subject=SecurityUtils.getSubject();
UsernamePasswordToken token=new UsernamePasswordToken(manager.getUserName(), Md5Util.md5(manager.getPassword(), Md5Util.SALT));
JSONObject result=new JSONObject();
try{
subject.login(token);
result.put("success", true);
}catch(Exception e){
result.put("success", false);
result.put("errorInfo", "用户名或者密码错误!");
e.printStackTrace();
}
ResponseUtil.write(response, result);
return null;
}
}

-------------------------------------------------------------------------------------------------------------

util

package com.open1111.util;

import org.apache.shiro.crypto.hash.Md5Hash;

/**
* Md5加密工具类
* @author user
*
*/
public class Md5Util {

public static final String SALT="open1111";

/**
* Md5加密
* @param str
* @param salt
* @return
*/
public static String md5(String str,String salt){
return new Md5Hash(str, salt).toString();
}

public static void main(String[] args) {
String password="123456";
System.out.println("Md5加密后:"+Md5Util.md5(password, Md5Util.SALT));
}
}

package com.open1111.util;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

/**
* ajax返回输出流工具类
* @author user
*
*/
public class ResponseUtil {

/**
* 页面输出
* @param response
* @param o
* @throws Exception
*/
public static void write(HttpServletResponse response,Object o)throws Exception{
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.println(o.toString());
out.flush();
out.close();
}
}

----------------------------------------------------------------------------------------------

realm

package com.open1111.realm;

import javax.annotation.Resource;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;

import com.open1111.entity.Manager;
import com.open1111.service.ManagerService;

/**
* 自定义Reaml
* @author user
*
*/
public class MyRealm extends AuthorizingRealm{

@Resource
private ManagerService managerService;

/**
* 为当前登录用户授予角色和权限
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
// TODO Auto-generated method stub
return null;
}

/**
* 验证当前登录的用户
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String userName=(String) token.getPrincipal();
Manager manager=managerService.getByUserName(userName);
if(manager!=null){
SecurityUtils.getSubject().getSession().setAttribute("currentUser", manager);
AuthenticationInfo authcInfo=new SimpleAuthenticationInfo(manager.getUserName(), manager.getPassword(), "xxx");
return authcInfo;
}else{
return null;
}
}

}

------------------------------------------------------------------------------

service

package com.open1111.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.open1111.dao.ManagerDao;
import com.open1111.entity.Manager;
import com.open1111.service.ManagerService;

/**
* 管理员Service实现类
* @author user
*
*/
@Service("managerService")
public class ManagerServiceImpl implements ManagerService{

@Resource
private ManagerDao managerDao;

public Manager getByUserName(String userName) {
return managerDao.getByUserName(userName);
}
}

--------------------------------------------------------------------

dao

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.open1111.dao.ManagerDao">

<resultMap type="Manager" id="ManagerResult">
<result property="id" column="id"/>
<result property="userName" column="userName"/>
<result property="password" column="password"/>
</resultMap>

<select id="getByUserName" parameterType="String" resultMap="ManagerResult">
select * from t_manager where userName=#{userName}
</select>

</mapper>

时间: 2024-08-24 23:37:48

cms-登陆的相关文章

帝国cms登录提示“该用户未在本站激活,请重新登陆以激活帐号”

整合UCenter 1.5.0 帝国退出显示 该用户未在本站激活,请重新登陆以激活帐号 在帝国登陆,然后退出,会显示"退出成功",再显示"该用户未在本站激活,请重新登陆以激活帐号" 此提示出现在 /e/class/user.php  islogin() 函数下 //--------------------------- Ucenter ---------------------------if(getcvar('mldoactive')==$userid &

zerojs! 造出最好的 CMS 轮子

zerojs是一个基于nodejs.angularjs.git的CMS.在它之上可以继续开发出博客.论坛.wiki等类似的内容管理型系统. 拥抱开发者和社区 层次清晰,高度解耦.前后端即使分开也都是完全可独立运行的系统. 每一个层次都是用当前业界最流行的工具和方法作为底层,对开发者来说几乎无学习成本. 模块.主题.套件体系简单成熟,二次开发没有坑. 后端架构 zerojs 底层基于 sails.继承了 sails 三大优势: 强大的 Model 层.sails实现了自己的ORM,接口几乎和 mo

轻取帝国CMS管理员密码

“帝国”CMS是一套著名的PHP整站程序,是国内使用人数最多的PHPCMS程序之一.令人无奈的是,“帝国”虽然把势力壮大了,却忽略了自身防护的建设,结果在黑客攻击下,“帝国”沦陷了.“帝国”CMS曝出的漏洞能够让黑客在1分钟内拿到管理员的账户密码,之后更能轻松获取webshell.下面让我们一起来对“帝国”CMS进行一次入侵检测. 漏洞的成因: 都说安全是一个整体,千里之堤毁于蚁穴,往往一个看似坚不可摧的网站系统,在某个不被注意的角落出现了一个极小的疏忽,结果导致整个网站被黑客攻陷.“帝国”CM

ASP.NET开源CMS

CMS这里指 内容管理系统.是Content Management System的缩写. 产生 随着网络应用的丰富和发展,很多网站往往不能迅速跟进大量信息衍生及业务模式变革的脚步,常常需要花费许多时间.人力和物力来处理信息更新和维护工作:遇到网站扩充的时候,整合内外网及分支网站的工作就变得更加复杂,甚至还需重新建设网站:如此下去,用户始终在一个高成本.低效率的循环中升级.整合…… 于是,我们听到许多用户这样的反馈:页面制作无序,网站风格不统一,大量信息堆积,发布显得异常沉重:内容繁杂,手工管理效

二代CMS旅游网站程序V1使用手册(六):发布线路团期产品

二代CMS旅游网站管理系统,和传统的旅游系统不同,二代旅游系统的线路产品字段分为,基础字段库和线路团期,,基础字段库注意是保存线路特色,行程介绍,费用包含不包含等常规的基础字段.线路团期注意是保存线路的出发日期和价格,团期主题等变化较大的字段. 也就是说,线路团期和基础字段库可以是一对一的关系,也可以是一对多的关系,那么发布线路产品就是2种方式: 1.把所有线路的基本库先建好,,然后发布团期的时候,基础字段从基本库里面挑选就行了 2.直接安装传统的方式,先发布标题.团期.报价,然后发布基础字段库

帝国CMS弹出登录窗口实现方法

帝国CMS弹出登录窗口实现方法 看到好多网站都用弹出登陆窗口让用户登陆注册,其实就是用JS调用一个DIV层实现的 今天我用帝国CMS具体讲一下怎么实现这个效果: 一.打开帝国CMS后台-公共模板-JS讲用登陆模板 把附件里的调用登陆模板代码复制进去-修改 二.在你的首页加入CSS样式和JS代码 1.CSS: <style> #lggoodBox{ margin:0 auto; padding:0px; text-align:left; width:370px; height:220px; ba

maven构建springmvc+mybatis+rest+Webservice+bootstrap html5(开源CMS)

SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap + Maven项目构建绝对开源平台 项目Mave构建,模拟大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供原子化.模块化的方案,将功能模块进行拆分,可以公用到所有的项目中.架构采用分布式部署架构,所有模块进行拆分,使项目做到绝对解

PHP平台CMS系统Drupal小试身手----安装教程

最近一直在研究基于Asp.Net MVC的CMS---Orchard,忽然新血来潮,看看多年不看的PHP平台的CMS,那好,就拿Drupal试试身手吧. 第一大招: 环境配置 + 安装. 1.环境配置. 百度一下,谷歌一下,最终选择了XAMPP做为环境. 下载地址 : https://www.apachefriends.org/zh_cn/index.html 选择1.8.3下载. 进入安装. xampp 安装,请自行百度. 为保留截图,只要不安装在c盘,应该就可以避免问题了. 那就 D:\xa

JEECMS v8 发布,java 开源 CMS 系统

JEECMSv8 是国内java开源CMS行业知名度最高.用户量最大的站群管理系统,支持栏目模型.内容模型交叉自定义.以及具备支付和财务结算的内容电商为一体: 对于不懂技术的用户来说,只要通过后台的简单设置即可自定义出集新闻管理.图库管理.视频管理.下载系统.文库管理.政务公开.作品管理.产品发布.供求信息.房屋租售.招聘信息.网络问卷调查及留言板于一体的综合性且不失个性化门户网站.  对于技术达人来说,jeecms不仅提供全部源码,而且在研发之初即全面的考虑了二次开发的高效性和代码的高移植性,

帝国CMS与Ucenter同步通信,会员整合

背景:公司因上市进行项目大整合.一部分项目使用phalcon新框架,一小部分使用帝国CMS,这样就产生了问题:phalcon框架对cookie具有加解密,帝国获取到phalcon的cookie但却无法解密.或许你想到的是将phalcon中得cookie加解密方法移植过去即可,但phalcon是C语言写得框架,框架只提供接口,不提供源码..这个方法over.so使用ucenter同步登陆的方法在帝国中获取相应的用户信息.接下来将介绍如何进行整合. 步骤一.下载帝国CMS和Ucenter同步通信的插