springsecurity-01-0511
springsecurity-01-0511课堂代码

BaseController
package com.springsecurity.springsecurity.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class BaseController { @RequestMapping({"/","/index"})
public String index(){
return "index";
} @RequestMapping("/tologin")
public String toLogin(){
return "login";
} @RequestMapping("/welcome")
public String toWelcome(){
return "welcome";
} @RequestMapping("/article-list")
public String toArticleList(){
return "article/article-list";
} @RequestMapping("/product-brand")
public String toProductBrand(){
return "product/product-brand";
}
@RequestMapping("/product-category")
public String toProductCategory(){
return "product/product-category"; }
@RequestMapping("/product-list")
public String toProductList(){
return "product/product-list";
} @RequestMapping("/member-list")
public String toMemberList (){
return "member/member-list";
}
@RequestMapping("/member-del")
public String toMemberDel(){
return "member/member-del";
} @RequestMapping("/admin-role")
public String toAdminRole (){
return "admin/admin-role";
}
@RequestMapping("/admin-permission")
public String toAdminPermission(){
return "admin/admin-permission";
}
@RequestMapping("/admin-list")
public String toAdminList(){
return "admin/admin-list";
}
}
SecurityConfig
package com.springsecurity.springsecurity; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter { // 授权:设置权限(权限划分)和页面(四个菜单项)的访问关联
// admin 页面需要有admin权限
// article页面需要有article权限
// 等等 @Override
protected void configure(HttpSecurity http) throws Exception {
// 关闭springsecurity阻止Frame
http.headers().frameOptions().disable(); // 请求访问需要的权限 http.authorizeRequests().antMatchers("/admin-role","/admin-permission","/admin-list").hasRole("admin")
.antMatchers("/article-*").hasRole("article")
.antMatchers("/member-*").hasRole("member")
.antMatchers("/product-*").hasRole("product"); // 开启登录页面 默认/login springsecurity自带的
// http.formLogin(); // /login提交表单默认的用户名和密码的请求参数是:username和password,还能验证登录失败/login?err,登录成功跳转到首页
http.formLogin().loginPage("/tologin").loginProcessingUrl("/login"); // <from action="/login"> <input name="username"/> <input name=password/>
// 阻止网络攻击的检测----/tologin关联/login出现
http.csrf().disable(); // 开启注销, 默认访问/logout,当用户确认注销跳转到/login?logout登录页面
http.logout(); // 开启记住用户 将用户信息保存在cookie中
http.rememberMe(); } // 认证:用户和权限绑定
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 用户持久化:数据库 内存
// 101用户对应的权限article
// SpringSecurity5.0 版本对于密码进行不同规则的加密
// passwordEncoder()
// BCryptPasswordEncoder加密格式对密码进行加密 auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("101").password(new BCryptPasswordEncoder().encode("1")).roles("article").and()
.withUser("102").password(new BCryptPasswordEncoder().encode("1")).roles("product").and()
.withUser("103").password(new BCryptPasswordEncoder().encode("1")).roles("member").and()
.withUser("104").password(new BCryptPasswordEncoder().encode("1")).roles("admin");
} }
springsecurity-01-0511的更多相关文章
- 用SpringSecurity从零搭建pc项目-01
注:之前写过一些列的SpringSecurity的文章,重新写一遍是为了把某些不必要的步骤省去,留下精简的,因为工作中有一些不需要. 在java的权限框架里,shiro和SpringSecurity是 ...
- SpringMVC+spring-security+sitemesh+hibernate+freemarker整合-转
http://www.oschina.net/code/snippet_170632_46774 代码分享 当前位置: 代码分享 » Java » Web编程 搜 索 SpringMVC+spr ...
- SpringSecurity的简单应用(一)
java项目首先要提的就是jar包了,Springsecurity的jar下载地址:http://static.springsource.org/spring-security/site/downlo ...
- web项目学习之spring-security
转自<http://liukai.iteye.com/blog/982088> spring security功能点总结: 1. 登录控制 2. 权限控制(用户菜单的显示,功能点访问控制) ...
- SpringBoot19 集成SpringSecurity01 -> 环境搭建、SpringSecurity验证
1 环境搭建 1.1 创建一个SpringBoot项目 项目脚手架 -> 点击前往 1.2 创建一个Restful接口 新建一个Controller类即可 package com.example ...
- SpringBoot整合SpringSecurity简单实现登入登出从零搭建
技术栈 : SpringBoot + SpringSecurity + jpa + freemark ,完整项目地址 : https://github.com/EalenXie/spring-secu ...
- Spring Cloud 之Spring-Security
对于Spring-Security首先要明白这么几点: 1.什么是SpringSecurityurity2.SpringSecurity应用场景3.SpringBoot整合Security4.Secu ...
- SpringMVC+springSecurity+flexPaper 配置--类似百度文库在线预览
背景:现在项目需要做一个类似百度文库的在线预览功能,在网上找了下很多人推荐使用FlexPaper,所以今天尝试学习了FlexPaper顺便集成到现有的框架中 由于网上目前的说的都不是很详细,所以现在记 ...
- SpringBoot20 集成SpringSecurity02 -> 利用SpringSecurity进行前后端分离的登录验证
1 SpirngBoot环境搭建 创建一个SpringBoot项目即可,详情参见三少的相关博文 参考博文 -> 点击前往 SpirngBoot项目脚手架 -> 点击前往 2 引入Spirn ...
- SpringSecurity学习四----------基于不同角色跳转到不同URL
© 版权声明:本文为博主原创文章,转载请注明出处 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0& ...
随机推荐
- 微服务与SpiringBoot
微服务: 微服务是一种架构风格,一般说到微服务都会说"微服务架构",即一个系统的各个功能(如结账,用户等)独立出来,以及各个服务独立出来,每个模块是可独立替换.可独立升级的软件单元 ...
- 3.k8s核心概念
k8s的核心概念 一. Pod pod,中文翻译过来叫豆荚,如下图.我们都知道豆荚,一个豆荚里面有很多豆子.豆荚就可以理解为pod,一个个的豆子就可以理解为容器.pod和容器的关系是一个pod里面可以 ...
- Solution -「CF 1060F」Shrinking Tree
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个点的树,反复随机选取一条边,合并其两端两点,新点编号在两端两点等概率选取.问每个点留到最后的概率. ...
- Solution -「CF 1342E」Placing Rooks
\(\mathcal{Description}\) Link. 在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...
- 自学linux(修改中文)STEP2
登录身份 最好用普通身份登录,而不是root用户,因为root用户权限太高,容易引起安全问题. 不显示中文 安装系统后,在图形化界面设置中文还是不生效.查询资料后如下: 1. 查看 linux 系统下 ...
- 编写资源yaml文件、压力机配置hosts
资源文件 Deployment/StatefulSet/DaemonSet.Service.Ingress等 参考:https://www.cnblogs.com/uncleyong/p/155710 ...
- [旧][Android] 命名规范和编码规范
备注 原发表于2016.05.07,资料已过时,仅作备份,谨慎参考 前言 本文适用范围:已参加项目开发的人 写这篇文章的目的是为方便地对代码进行管理,让整个团队的代码规范化.这里的部分规定可能和你在其 ...
- Renix签名字段详解——网络测试仪实操
一.签名字段简介 在添加/修改流量时,会有一个签名字段选项 (1)勾选以后,RENIX软件在发流时,会把每个报文的Payload(净荷)的最后18字节修改为特殊的值,用来统计流的时延.丢包等内容 (2 ...
- 使用教程:宝塔服务器管理助手Linux面版
网页提示:宝塔Linux面板初始化成功,点击登陆页面:直接使用初始化配置时填写的帐号及密码登陆面板功能:网站管理.FTP管理.数据库管理.系统安全.文件管理.计划任务.环境设置. 方法/步骤1: 使用 ...
- PyTorch 如何理解张量:一维张量、二维张量、行/列向量、矩阵
理解张量,并将张量与线性代数的知识连接起来,我认为最重要的是理解 tensor 的两个属性:shape 和 ndim . ndim 表示张量的维度,一维张量的 ndim 值为 1,二维张量的 ndim ...