注册、登录、退出登录
运营商系统登录与安全控制
2.1需求分析
完成运营商登陆功能
(1)、登录页面
(2)登录后页面
(3)、点击右上角头像后显示。
2.2登陆功能的实现
2.2.1配置文件
(1)修改mall-manager-web的pom.xml ,添加依赖
<!-- 身份验证 --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> </dependency> |
(2)修改web.xml
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-security.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
(3)mall-manager-web的spring目录下添加配置文件spring-security.xml
<!-- 以下页面不被拦截 --> <http pattern="/*.html" security="none"></http> <http pattern="/css/**" security="none"></http> <http pattern="/img/**" security="none"></http> <http pattern="/js/**" security="none"></http> <http pattern="/plugins/**" security="none"></http> <!-- 页面拦截规则 --> <http use-expressions="false"> <intercept-url pattern="/*" access="ROLE_ADMIN" /> <form-login login-page="/login.html" default-target-url="/admin/index.html" authentication-failure-url="/login.html" always-use-default-target="true"/> <csrf disabled="true"/> <headers> <frame-options policy="SAMEORIGIN"/> </headers> </http> <!-- 认证管理器 --> <authentication-manager> <authentication-provider> <user-service> <user name="admin" password="123" authorities="ROLE_ADMIN"/> <user name="sunwukong" password="dasheng" authorities="ROLE_ADMIN"/> </user-service> </authentication-provider> </authentication-manager> |
配置说明:
1.如果你在系统中使用了框架页,需要设置框架页的策略为SAMEORIGIN
<headers> <frame-options policy="SAMEORIGIN"/> </headers> |
2.always-use-default-target:指定了是否在身份验证通过后总是跳转到default-target-url属性指定的URL。
2.2.2登录页面
修改mall-manager-web的 login.html
<form id="loginform" action="/login" method="post" class="sui-form"> <div class="input-prepend"><span class="add-on loginname"></span> <input id="prependedInput" name="username" type="text" placeholder="邮箱/用户名/手机号" class="span2 input-xfat"> </div> <div class="input-prepend"><span class="add-on loginpwd"></span> <input id="prependedInput" name="password" type="password" placeholder="请输入密码" class="span2 input-xfat"> </div> <div class="setting"> <div id="slider"> <div id="slider_bg"></div> <span id="label">>></span> <span id="labelTip">拖动滑块验证</span> </div> </div> <div class="logined"> <a class="sui-btn btn-block btn-xlarge btn-danger" οnclick="document:loginform.submit()" target="_blank">登 录</a> </div> </form> |
2.3主界面显示登陆名
2.3.1后端代码
在mall-manager-web新建LoginController.java
package com.mall.manager.controller; import java.util.HashMap; import java.util.Map; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/login") public class LoginController { @RequestMapping("name") public Map name(){ String name=SecurityContextHolder.getContext() .getAuthentication().getName(); Map map=new HashMap(); map.put("loginName", name); return map ; } } |
2.3.2前端代码
- 新建loginService.js
//登陆服务层 app.service('loginService',function($http){ //读取登录人名称 this.loginName=function(){ return $http.get('../login/name.do'); } }); |
- 新建indexController.js
app.controller('indexController' ,function($scope,$controller ,loginService){ //读取当前登录人 $scope.showLoginName=function(){ loginService.loginName().success( function(response){ $scope.loginName=response.loginName; } ); } }); |
(3)在页面admin/index.html引入JS
<script type="text/javascript" src="../plugins/angularjs/angular.min.js"></script> <script type="text/javascript" src="../js/base.js"></script> <script type="text/javascript" src="../js/service/loginService.js"></script> <script type="text/javascript" src="../js/controller/indexController.js"></script> |
(4)添加指令
<body class="hold-transition skin-green sidebar-mini" ng-app="mall" ng-controller="indexController" ng-init="showLoginName ()"> |
(5)将页面上的测试用户 替换成 {{loginName}}
2.4退出登录
(1)在mall-manager-web的spring-security.xml的http节点中添加配置
<logout/> |
加此配置后,会自动的产生退出登录的地址/logout,如果你不想用这个地址 ,你也可以定义生成的退出地址以及跳转的页面,配置如下
<logout logout-url="" logout-success-url=""/> |
logout-url:退出的地址,会自动生成
logout-success-url:退出后跳转的地址
(2)修改注销的链接
<div class="pull-right"> <a href="../logout" class="btn btn-default btn-flat">注销</a> </div> |
注册、登录、退出登录相关推荐
- 微信小程序 登录与退出登录
app.js里onLaunch() { // 展示本地存储 onLaunch: function () { //判断用户的登录状态 this.globalData.loginPromise = get ...
- Java实现登录功能(含修改密码 退出登录等)
1.登录页面如图 2.业务准备 2.1.用户实体类 public class User {/*** 用户ID*/private Integer id;/*** 用户账号*/private String ...
- node.js(node.js+mongoose小案例)_实现简单的注册登录退出
一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...
- 个人博客四|注册登录退出功能后台开发
声明:本博客的注册登录退出功能将使用django-allauth,参考资源如下: django-allauth文档 django-allauth教程 1.安装django-allauth pip in ...
- vue实现登录、注册、退出、跳转等功能,简单实用
目录 效果图1: 效果图2: 效果图3: 效果图4: 完整实例: 效果图1: 效果图2: 效果图3: 效果图4: 完整实例: <!DOCTYPE html> <html>< ...
- 这两天老是有兄弟问到Vue的登陆和注册,登陆成功留在首页,没有登录回到登录页面,现在我用最简单实用的方法实现(两分钟技就看懂)...
其实登录注册,并且登录一次保持登录的状态,是每个项目都需要实现的功能. 网上也有很多的方法,不过,不是通俗易懂,在这里说一下我自己的方法,非常简单实用 核心就是用localStorage存.取数据,这 ...
- android 点击退出账号,Android应用退出登录的实现方法
每一个app都会有一个"退出登陆"的功能,当点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,后来用广播实现了 ...
- 登录,注册,登录,登录..?
Last year I found myself in an interesting conversation about which copy to use for a website's sign ...
- CAS 4.1.x 单点登出(退出登录)的原理解析
2019独角兽企业重金招聘Python工程师标准>>> 我们在项目中使用了cas作为单点登录的解决方案,当在集成shiro做统一权限控制的时候,发现单点退出登录有坑,所以啃了一下CA ...
最新文章
- 5、计算机图形学——着色与光照模型
- Spring+SpringMVC+Log4J
- golang常见内存泄漏
- 将redis作为windows服务安装
- 编写高质量代码:Web前端开发修炼之道(三)
- ubuntu 应用程序菜单_Ubuntu智能手机,塔式无人机飞行控制应用程序等
- Jboss启动报错——DailyRollingFileAppender无法转换异常
- 苏格拉底的苹果_苏格拉底关于人生的教诲
- android 开发 - 结束所有activity
- Java压缩/解压缩二进制文件
- click和blur冲突的问题
- python 把list中的所有元素串起来变为字符串
- c#模板保存并读取.mdl文件
- ps2手柄linux,索尼为PS5 DualSense手柄推出官方Linux驱动程序
- 计算机基础知识vf试题及答案,2016年计算机二级考试《VF》上机试题及答案(1)
- php 孙中岳_华杯成绩终于出来了!(学而思、华英)
- Android实现TTS文字转语音功能
- 2022中元节前后几天不出门?前三天后三天不能出门是真的吗?
- Spreadsheet
- linux下安装MySQL遇到的坑