焦点讯息:spring-security-oauth2是什么?OAuth2与spring-security-oauth2
OAuth2与spring-security-oauth2
(资料图)
OAuth2OAuth2是什么OAuth2中4种授权模式作用场景 spring-security-oauth2spring-security-oauth2是什么搭建spring-security-oauth2案例环境版本pom.xmlapplication.yml 目录结构密码模式获取token访问受保护的资源 授权码模式获取code获取token访问受保护的资源 结语
OAuth2
OAuth2是什么
关于这块概念可以参考: https://www.jianshu.com/p/84a4b4a1e833
OAuth2中4种授权模式作用场景
授权码模式 授权码模式一般用于提供给第三方使用简化模式 简化模式一般不会使用密码模式 密码模式一般仅用于系统内部使用客户端凭证模式 客户端凭证模式一般不会使用
spring-security-oauth2
spring-security-oauth2是什么
spring-security-oauth2是基于spring-security框架完整实现oauth2协议的框架,具有oauth2中4种模式访问和第三方登录等功能。
搭建spring-security-oauth2案例
环境版本
1.8Hoxton.SR92.3.0.RELEASE8.0.15
pom.xml
org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testorg.springframework.bootspring-boot-starter-jdbcorg.springframework.cloudspring-cloud-starter-securityorg.springframework.cloudspring-cloud-starter-oauth2org.springframework.securityspring-security-jwt1.1.0.RELEASEmysqlmysql-connector-java${mysql.connector.version}org.springframework.bootspring-boot-starter-data-redisorg.projectlomboklombokorg.springframework.bootspring-boot-dependencies${spring.boot.version}pomimportorg.springframework.cloudspring-cloud-dependencies${spring.cloud.version}pomimport
application.yml
server: port: 8080spring: datasource: url: jdbc:mysql://192.168.174.129:3306/oauth?serverTimezone=GMT%2B8&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver
目录结构
DemoAuthorizationServerConfiguration:授权服务配置
@Configuration@EnableAuthorizationServer@AllArgsConstructorpublic class DemoAuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {private DataSource dataSource;private TokenStore tokenStore;private AuthenticationManager authenticationManager;private UserDetailsService userDetailsService;private TokenEnhancer tokenEnhancer;private JwtAccessTokenConverter jwtAccessTokenConverter;@Overridepublic void configure(ClientDetailsServiceConfigurer clients) throws Exception {// @formatter:offclients.inMemory().withClient("test-client").secret("$2a$08$YGw560YLRWHg3Hl29ZlmdOfAeyRQ2u0kDiqUyQ62Y1pkW5n4a.hjO").authorizedGrantTypes("password", "authorization_code", "refresh_token", "implicit").authorities("ROLE_CLIENT").redirectUris("http://localhost:8084/oauth/callback").scopes("read", "write", "all");// 请求参数scope必须为集合中的某个值// @formatter:on}@Overridepublic void configure(AuthorizationServerSecurityConfigurer security) throws Exception {// 允许表单传参client信息security.allowFormAuthenticationForClients().tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");}@Overridepublic void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {endpoints.tokenStore(tokenStore).authenticationManager(authenticationManager).userDetailsService(userDetailsService).tokenEnhancer(tokenEnhancer).accessTokenConverter(jwtAccessTokenConverter);}}
DemoJwtTokenStoreConfiguration:JwtToken仓库配置
@Configurationpublic class DemoJwtTokenStoreConfiguration {@Beanpublic TokenStore tokenStore(JwtAccessTokenConverter tokenConverter) {return new JwtTokenStore(tokenConverter);}@Beanpublic JwtAccessTokenConverter tokenConverter() {JwtAccessTokenConverter tokenConverter = new JwtAccessTokenConverter();tokenConverter.setSigningKey("abc");return tokenConverter;}@Beanpublic TokenEnhancer tokenEnhancer(JwtAccessTokenConverter tokenConverter) {return new DemoJwtTokenEnhancer(tokenConverter);}}
DemoResourceServerConfiguration:资源服务配置
@Configuration@EnableResourceServer@AllArgsConstructorpublic class DemoResourceServerConfiguration extends ResourceServerConfigurerAdapter {private AccessDeniedHandler accessDeniedHandler;//private AuthenticationEntryPoint authenticationEntryPoint;@Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().authenticated().and().exceptionHandling().accessDeniedHandler(accessDeniedHandler)//.authenticationEntryPoint(authenticationEntryPoint).and().csrf().disable();}@Overridepublic void configure(ResourceServerSecurityConfigurer resources) throws Exception {super.configure(resources);}}
DemoWebSecurityConfiguration:WebSecurity配置
@Configurationpublic class DemoWebSecurityConfiguration extends WebSecurityConfigurerAdapter {@Bean@Override@SneakyThrowspublic AuthenticationManager authenticationManagerBean() {return super.authenticationManagerBean();}@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder(BCryptPasswordEncoder.BCryptVersion.$2A, 8);}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.httpBasic().and().csrf().disable();}}
DemoController:受保护的Controller资源
@RestController@RequestMapping("/api")public class DemoController {@RequestMapping("/test")public Maptest() {Mapresult = new HashMap<>();result.put("time", System.currentTimeMillis());return result;}}
DemoClientDetailsService:ClientDetailsService实现类
public class DemoClientDetailsService extends JdbcClientDetailsService {public DemoClientDetailsService(DataSource dataSource) {super(dataSource);}}
DemoUserDetails:用户信息类
@Getterpublic class DemoUserDetails extends User {/** * 用户id */private String userId;/** * 手机号 */private String mobile;/** * 是否超级管理员 1是 0否 */private Boolean administrator;/** * 角色id */private Listroles;public DemoUserDetails(String userId, String mobile, String username, String password, boolean enabled, Listroles, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities, Boolean administrator) {super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked,authorities);this.userId = userId;this.roles = roles;this.administrator = administrator;this.mobile = mobile;}}
DemoUserDetailsServiceImpl:UserDetailsService实现类
@Servicepublic class DemoUserDetailsServiceImpl implements UserDetailsService {@Overridepublic UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {return new DemoUserDetails("userId", "mobile", s, "$2a$08$EiGfaup8QkkjT6DhvCSFRuNhdFTEV7Rbu/avUm8lGL2ZUji/lTWji", true, Arrays.asList(1L), true, true, true,AuthorityUtils.commaSeparatedStringToAuthorityList("1,2"), false);}}
DemoAccessDeniedHandler:403处理器
@Componentpublic class DemoAccessDeniedHandler implements AccessDeniedHandler {@Overridepublic void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException, ServletException {httpServletResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);httpServletResponse.setContentType("application/json;charset=UTF-8");PrintWriter out = httpServletResponse.getWriter();out.write(new ObjectMapper().writeValueAsString("权限不足,请联系管理员!"));out.flush();out.close();}}
DemoAuthenticationEntryPoint:401处理器
//@Componentpublic class DemoAuthenticationEntryPoint implements AuthenticationEntryPoint {@Overridepublic void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {httpServletResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);httpServletResponse.setContentType("application/json;charset=UTF-8");PrintWriter out = httpServletResponse.getWriter();out.write(new ObjectMapper().writeValueAsString("请先登录!"));out.flush();out.close();}}
DemoJwtTokenEnhancer:TokenEnhancer实现类
@AllArgsConstructorpublic class DemoJwtTokenEnhancer implements TokenEnhancer {private JwtAccessTokenConverter jwtAccessTokenConverter;@Overridepublic OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {DemoUserDetails principal =(DemoUserDetails) authentication.getUserAuthentication().getPrincipal();Mapinfo = new HashMap<>();info.put("user_id", principal.getUserId() == null ? "" : String.valueOf(principal.getUserId()));((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info);return jwtAccessTokenConverter.enhance(accessToken, authentication);}}
DemoPasswordEncoder:PasswordEncoder实现类
public class DemoPasswordEncoder implements PasswordEncoder {@Overridepublic String encode(CharSequence rawPassword) {return (String) rawPassword;}@Overridepublic boolean matches(CharSequence rawPassword, String encodedPassword) {return encodedPassword.equals(encode(rawPassword));}}
密码模式
获取token
/oauth/token,获取token,access_token就是我们需要在请求头中携带的token。 访问url: http://localhost:8080/oauth/token?username=admin&password=qwer1234&grant_type=password&scope=all 并在请求头中加入basic auth参数 眼力好的同学已经看出来上图中已经在url中出现了client… 也可以直接访问这个url: http://localhost:8080/oauth/token?username=admin&password=qwer1234&grant_type=password&scope=all&client_id=test-client&client_secret=abc 这种访问方式又是哪里出来的?第一个java代码块里面就有配置了… allowFormAuthenticationForClients又是怎么实现的呢?
@Overridepublic void configure(AuthorizationServerSecurityConfigurer security) throws Exception {// 允许表单传参client信息security.allowFormAuthenticationForClients().tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");}
访问受保护的资源
访问受保护的资源 图片中就是在请求头中将入key为Authorization的值 Authorization Bearer eyJhbGciOiJ…
授权码模式
获取code
直接在浏览器上访问该链接 http://localhost:8080/oauth/authorize?response_type=code&scope=all&client_id=test-client&client_secret=abc&redirect_uri=http://localhost:8084/oauth/callback
浏览器弹出httpBasic验证 输入预设用户名/密码:admin/qwer1234 点击确定,弹出OAuth2用户授权页面,点击授权Authorize 页面重定向到redirect_uri参数指定的url并附带了code
获取token
使用上一步中获取的code替换下面的,并访问url: http://localhost:8080/oauth/token?grant_type=authorization_code&client_id=test-client&client_secret=abc&redirect_uri=http://localhost:8084/oauth/callback&code=OWwAmR
不会有人直接复制链接不改code参数吧?不会吧,不会吧
访问受保护的资源
该步骤与密码模式中一致
结语
spring-security-oauth2秉承spring一贯风格特色,配置多种多样,如果见到和上面配置不一样很正常,如果想要深入了解,需要仔细阅读源码。上面的案例只是简单的入门描述,由此可以引发很多疑问。
使用数据库配置client与user怎么做需要配置手机号验证码登录等其他方式需要怎么做授权码模式需要用户手动授权,如果特殊情况下改为不需要授权怎么做需要在网关中使用,该怎么做需要权限验证,该怎么做基于spring-security-oauth2框架的单点登录怎么做?
标签:
相关推荐:
精彩放送:
- []从“顶流歌手”到“身败名裂” 薛之谦他到底经历了什么?
- []杭州下沙新城医院详细地址在哪里?杭州下沙新城医院详细地址
- []环球今亮点!西门子PLC7怎么防止错误操作?西门子PLC梯形图编程规则
- []破釜沉舟主人公是谁?关于破釜沉舟主人公是谁的介绍
- []如何给导师发邮件?“联系导师”的经验和教训
- []定时器和延时器的区别 定时器和延时器的异步语句
- []什么是骨传导耳机?骨传导耳机品牌都有哪些?
- []当前简讯:电视黑屏有声音怎么回事?电视黑屏有声音的原因
- []当前讯息:创维55G60电视竟然不能播放4G以上超清视频?是怎么回事?
- []三年困苦后,2023年的MICE市场有哪十大趋势?
- []讯息:理想之城一共多少集电视剧?理想之城剧情介绍
- []今日聚焦!花都夜市最旺地方是哪?花都夜总会详情介绍
- []【聚看点】华为c8650怎么刷机?华为c88650的刷机教程及方法
- []全球热推荐:NSA是假5G?NSA组网模式有哪些?
- []环球快资讯丨想你念你停止再继续是什么歌?沉醉的青丝歌词分享
- []当前通讯!百余家A股公司获基金调研 高景气行业受重点关注
- []iPhone4S怎么设置手机铃声?iPhone4S手机铃声设置步骤
- []当前动态:iPhone怎么把信号标志改成圆点?使用教程来了
- []【环球热闻】如何给自己的网站接入谷歌联盟?方法步骤
- []环球观热点:如何通过Word制作电子贺卡?制作教程
- []热议:主动权益类基金净值强劲反弹 机构论“春季行情”能否如约而至
- []【网络防火墙】PVS的原理及应用详情介绍
- []天天滚动:常用计算机的外设有哪些?电脑外设产品什么品牌好?
- []天天动态:时隔17年还是万人迷 41岁陈好晒庆生自拍
- []环球关注:诺基亚最经典手机是什么?诺基亚最经典的五款手机介绍
- []KMP算法是什么?KMP算法详解
- []投篮机投篮有技巧吗?高手练习投篮的几个技巧
- []世界滚动:市场上销售的网络可视电话是什么?网络可视电话介绍与市场报价
- []如何使用电脑录制视频?电脑录制视频的方法步骤
- []斗破苍穹萧炎救云韵 萧炎熏儿很多人还不知道
- []全球热点评!coil是什么意思?coil的用法你知道吗?
- []互补品的需求曲线图是什么?微观经济学中的供给与需求定律
- []【前沿重器】句子相似度和匹配心法利器
- []焦点快报!如何下载天地图离线地图瓦片数据?离线地图的下载方式
- []每日观察!部落冲突:南瓜墓园挑战三星攻略
- []全球要闻:神州行是什么?神州行是移动还是联通?
- []【聚看点】百度指数是什么意思?其中的数值又代表什么?
- []蜂王浆的价格多少一斤?蜂王浆的价格介绍
- []即时焦点:亳州市风华中学官网 关于亳州市风华中学录取通知书的解答
- []每日看点!《百变大咖秀》官宣首轮嘉宾阵容 何炅李维嘉戴军杨迪加盟
- []高效Transformer、计算机视觉的总结与展望
- []环球微头条丨用眼部按摩仪好吗?有哪些好处?
- []混音器怎么用?混音器的操作方法
- []世界信息:车载冰箱危害有哪些?车载冰箱危害介绍
- []DNF勋章强化改版 工会硬币兑换和强化硬币获取
- []明星基金低位抢筹新能源 中游制造更受青睐
- []WIN+R:程序运行窗口或者打开某个文件
- []平板哪个牌子好用又实惠?平板电脑性价比排行榜
- []世界快看点丨自考法律本科科目有哪些?自考法律本科科目难易程度
- []焦点热门:女歌唱家殷秀梅简介 女歌唱家殷秀梅去世享年55岁
- []【全球播资讯】iPhone怎么解除流量下载限制?iPhone解除流量下载限制的方法
- []国外拍摄婚礼应注意什么?海外摄影师须知常识
- []关注:如何使用lock_guard锁定mutex?java中mutex的使用方法
- []网件orbi评测:V8和V9是一样的吗?
- []当前滚动:什么是3d打印?3D打印技术的发展趋势
- []ios系统和安卓系统噪音计测评 哪个更好用?
- []全球看热讯:网络服务器负载均衡原理是什么?网络服务器的负载均衡结构有多厉害?
- []即时焦点:正则解析网络运维数据之OneTake 解析网络运维数据
- []环球观焦点:福州:2022年保租住已开工5万套 棚户区改造新开工1.13万套
- []当前观察:密云区:加快建设“五兴乡村”
- []全球今日报丨黑龙江:实现电网统一监控平台现场接入
- []智能电网技术:电力节能的“法宝”
- []广东大埔实施智能电表升级改造
- []看热讯:农村电网改造 出现了智能电表 没有偷电的了 却出现卖电的了
- []【世界播资讯】我全责保险公司都赔吗
- []天天动态:行业透视 | 房企商票逾期快速增加势头得到遏制
- []买了车损险被水淹了保险赔付吗
- []公积金不买房怎么贷款
- []全球今亮点!下冰雹保险公司理赔吗
- []商业保险出院一般多久报销
- []天天播报:武汉高科产业园区Pre-REITs完成备案 为华中地区首单
- []全球速讯:一周跌超10%!这家公司2天接待200多家机构,聚焦这些问题
- []【世界报资讯】央行营管部:做好金融支持房地产市场平稳健康发展相关工作
- []世界今日讯!保利置业供应链ABS完成发行 发行总规模4.48亿元
- []步步高正式易主 湘潭市国资委将成为实际控制人
- []步步高控制权变更落地 湘潭国资将入主
- []天天热点!成都轨道新增发行3.64亿元供应链ABS 已累计发行7.32亿元
- []云南旅游:华侨城、贾博特申请解除2.13亿股限售
- []全球热消息:北京政府工作报告:支持住房改善等消费 老旧小区综合整治新开工300个
- []环球关注:上实发展:拟核销应收类款项不良资产6519.75万元
- []环球即时:奋达科技:公司控股股东近期大宗交易已完成并进行了公告,请查阅巨潮资讯网
- []获山东国资纾困 山东健康入主奥园珠海最大旧改
- []全球热议:长沙产投集团与华润置地签署合作 涉及城市更新、产业片区开发等
- []众泰汽车:公司目前生产车型中没有T450
- []世界速递!检察院承认自首可以追究刑事责任吗?
- []全球最资讯丨中华医学会内分泌学分会主任委员赵家军:先省饭钱,后省药钱,血糖健康多活好多年
- []广立微:公司严格遵守法律法规对信息披露的要求并按照规则及时披露公司重大事项,请以公司公告为准
- []【聚看点】海通证券:本轮上涨价值略占优 成长有望接力
- []【天天播资讯】香港航空宣布全员加薪;微信在2023还能给旅游业提供哪些土壤? | 一周速览
- []【当前独家】2023年雅阁酒店集团首批开业酒店亮相
- []全球快报:证券经纪业务规范八要点:不得使用零佣宣传 稳步推进非法跨境业务整改
- []世界微速讯:优质产品仍稀缺 绩优基金强势吸金
- []世界热讯:证监会、央行联合发布新规 规范公募基金信息披露电子化
- []天天快讯:基金周报:煤炭板块逆势走强 相关基金收益领先
- []全球球精选!国网宁夏电力上线应用电费智能核算功能
- []当前热讯:江苏电科院实现配网线损 分级分类数字化诊断
- []恒华科技BIM技术助力智慧楼宇建设
- []环球消息!养老保险明细单在哪儿打印
- []补考费有保险怎么报销
- []全球看点:如何申请商业险垫付
- 百度收录网站有哪些诀窍?百度收录网站的诀窍
- java连接数据库sql2000开发电话计费管理系统
- 焦点讯息:spring-security-oauth2是什么?OAuth2与spring-security-oauth2
- 天天热点评!u-center软件配置ublox系列协议手册 详情介绍
- 世界热点评!YY商城的交易方式有哪些?YY商城的方式一共有三种
- 每日焦点!什么App软件里面可以换发型照相?发型屋、魔发相机和AR魔镜
- 全球观天下!系统冗余是什么?冗余的详情介绍
- 微速讯:nba2012年扣篮大赛冠军是谁?nba2012年扣篮大赛冠军名单
- 全球看点:如何让少儿学好英语字母?26个英文字母背诵顺口溜
- 世界微头条丨忍痛割爱是什么意思?忍痛割爱的解释
- 【天天新要闻】健康保险的种类包括哪些
- 今日观点!中华保险是国企单位吗
- QQ浏览器是如何提升搜索相关性的?
- 全球快讯:1月14日14时,2023春节档新片票房预售突破2000万
- 焦点资讯:年终奖税率表2023
- 当前信息:2022年邮政贷款利率
- 【世界快播报】办信用卡的条件
- 天天最资讯丨硅宝科技:公司近期生产经营情况一切正常,各项工作顺利推进
- 天地数码:公司将根据《深圳证券交易所创业板股票上市规则》认真履行披露义务
- 当前视讯!银河电子:公司充电桩业务也基本如此,鉴于其体量较小,对公司整体影响较小
- 天天热资讯!美联新材:1、公司春节放假具体安排为:1月21日(星期六)至27日(星期五) 放假调休,共7天
- 丘栋荣20亿会买什么?线索来了!陆彬、施成、李孝华也有动作!
- 天天速讯:兴业证券:外资在加仓哪些方向?交易盘配置盘有何差异?
- 焦点精选!雅高进军奢华游轮领域;东航、南航拟从纽交所退市 | 大公司简报
- 天天精选!乌兰察布市工伤死亡赔偿包括哪些
- 全球快看:维宏股份:放开之后也就12月份最后三周,因为周期太短,就没做对比分析
- 环球看热讯:首位明星基金经理四季报出炉!大幅加仓宁德时代和中国平安 看好新能源三类机会
- 博菲电气:截止2022年11月30日公司共有股东10319户
- 劲韧2022!传祺全年销量超36.2万辆,同比增长11.8%
- 天天新资讯:CFTC商品持仓解读:投机者削减美国原油净多头头寸
- 全球观察:净赚21.1亿-25.1亿!爱旭股份去年业绩大幅扭亏为盈!
- 每日速递:光伏巨头日赚5000万,挡不住股价新低
- 每日短讯:捷报!京山轻机再次“敲开”印度市场
- 原来微电网很好懂,一文详解微电网
- 环球看热讯:烽火通信携手山东电力共创SPN新成果
- 当前动态:珍酒李渡集团港交所递表 2022年前三季度总收入42.49亿元
- 资讯推荐:工地团体意外险怎么买,以下四种方法可购买
- 什么是基本养老账户和临时养老账户
- 当前热文:预制菜开启春节之战,破局立新正在进行时
- 天天动态:双边公积金什么意思,公积金汇缴的总额
- 鑫享人生15年后怎样领
- 奥园健康发布内部控制评估结果:采取的整改措施充分有效
- 公积金账户封存是什么意思,怎么提取
- 全球焦点!民间借贷中明确的事项有哪些?
- 【全球新视野】东箭科技:1月12日公司高管罗军减持公司股份合计15.14万股
- 全球资讯:润和软件:1月12日公司高管周红卫减持公司股份合计52.3万股
- 世界观热点:龙佰集团:1月12日公司高管申庆飞增持公司股份合计2.31万股
- 世联行董事会:选举胡嘉为董事长 陈劲松为联席董事长
- 连平:房贷利率有望保持在历史低位
- 爱乐达:1月12日公司高管汪琦减持公司股份合计11.47万股
- 宜华健康:实控人刘绍喜关联方无偿捐赠颂阳实业已完成工商变更登记手续
- 公告精选:阿里巴巴有意向取得2.48亿股美凯龙股票;南方航空等拟将美国存托股份从纽交所退市
- 英洛华:公司未与贵州习酒有业务合作,无相关计划
- 焦点速读:2022年12月新发个人房贷平均利率4.26%,为有统计以来最低
- 我爱我家:持股5%以上股东东银玉衡计划减持不超过2%股份
- 天天热点!融信中国延期寄发通函 涉融信服务和秀景园林续签服务框架协议
- 资讯推荐:建发合诚:1月11日至1月12日公司高管黄和宾、刘志勋、高玮琳增持公司股份合计16.74万股
- 龙湖2022年累计交付超11万套 含50个城市超140个项目
- 天天实时:奥园美谷为子公司融资提供补充担保 将番禺奥园广场房产提供抵押
- 前沿资讯!云南锗业:目前国内尚无权威机构发布相关排名。
- 朗诗绿色管理:2022年累计销售额222.87亿元
- 栖霞建设为苏州卓辰置业1.5亿元借款提供连带责任担保
- 世界要闻:中原城市领先指数CCL连升三周最新报158.23点 确认楼价见底回稳
- 消息称京东考虑将物流地产等2家子公司上市 各自筹集约10亿美元
- 全球聚焦:远兴能源:公司将根据项目试车情况,稳步推进产能投放
- 昆船智能:公司尚未布局AIGC
- 全球观速讯丨富力地产2022年全年销售收入384.3亿元 12月揽金20.4亿元
- 沃隆食品IPO:每日坚果,还卖得动吗?
- 当前快播:金融部门:完善针对30家试点房企的“三线四档”规则
- 建发股份拟63亿收购美凯龙29.95%股份 或成为其控股股东
- 新资讯:宝馨科技:若股东所持公司股份涉及权益变动,公司会根据相关规定督促股东及时履行信息披露义务
- 协鑫集成:公司目前经营情况正常,关于公司EPC项目业绩情况请关注公司定期报告相关内容
- 【天天时快讯】金融部门:调整优化并购重组、再融资等5项房企股权融资措施
- 拓维信息:截至1月10日,公司股东人数为98731人
- 新赛年,添新绩!第四届“非凡奖”获奖名单揭晓,卧兔网络荣获最佳家电行业海外网红营销奖!
- 天天速讯:寒潮来袭 我国多地采取多种措施应对 保障平安返乡路
- 财面儿丨朗诗绿色管理2022年签约销售额约222亿元
- *ST日海:根据有关规则,公司需在2023年1月31日前披露2022年度业绩预告
- 世界热推荐:央行邹澜:12月新发放个人住房贷款利率平均4.26% 为2008年以来最低
- 联防联控机制统一调度,阿里巴巴牵头,朱氏药业集团10万台血氧仪已全部交付
- 播报:亿达中国2022全年销售额19.5亿元 均价基本持平
- 家居丨建发股份:拟不超过63亿元现金收购美凯龙29.95%股份
- 家居丨美联新材股东张朝益累计减持524.31万股
- 当前视讯!宁波远洋:二级市场的股票价格波动受多重因素影响,公司将积极做好生产经营,保持良好的基本面
- 环球新资讯:朝阳科技:设立全资子公司星联科技是公司在上游配件领域作出的业务延伸,目前尚处于前期推进阶段
- 跨境通:公司股东情况公司会根据中国登记结算公司深圳分公司提供的数据定期在互动平台进行
- 恒地古洞北项目改方案
- 1月13日同兴环保涨停分析:碳中和,环保,钠离子电池概念热股
- 1月13日合力泰涨停分析:指纹识别,智能手表,无线充电概念热股
- 《2023春节置业意向报告》发布 超八成意向购房者计划春节看房购房
- 环球热消息:1月13日盈方微涨停分析:VR&AR,小米概念股,北斗导航概念热股
- 东方集团:公司正在加快推进房地产业务资产处置和资金回笼,房地产业务相关子公司无上市计划
- 华夏幸福:美元债重组债权人会议延期至1月16日举行
- 天天微头条丨1月13日江苏华辰涨停分析:新能源汽车,充电桩,光伏概念热股
- 每日焦点!天地源收购西安高新红庙村改造项目55%股权 已完成工商变更登记
- 中国技术闪耀CES,海信电视斩获15项权威大奖
- 传祺M8宗师硬刚两台重型大货车,中国最安全MPV在这里
- 【全球聚看点】安妮股份:公司没有生产相关产品
- 短讯!凯乐科技股价涨停,公司紧急提示风险,投资者仍可报名索赔
- 今日热讯:丁祖昱:楼市典型32城“保交付”成绩如何?
- 【全球报资讯】浙江顺泰实业2.55亿元竞得绍兴磕下村三宗商住地
- 当前速读:板块异动 | 地产利好政策频出带动家居板块估值修复 家居用品概念股盘中走强
- 全球观天下!【BT金融分析师】Novavax在2022年股价暴跌93%,分析师称其苦日子还未到头
- 天天快讯:1.23亿!海南文旅大盘再现违建被罚,官方回应“已没收,办产权证要等通知”
- 环球要闻:微观这一年?房企|布局大湾区多城,2022年却鲜少拿地,靠开发顶豪走红的鹏瑞集团能否持续发力?
- 【全球聚看点】坚朗五金:截至2023年1月10日,公司股东数量为:13,698户
- 当前热门:朗迪集团:公司子公司宁波朗迪环境科技有限公司主营业务为空气过滤网,主要应用于家用空调和商用空调等
- 世界今亮点!多家航司重启招聘:空姐空少最抢手,有公司开出33万年薪
- 外国游客锐减99%,京都面临破产危机,日本旅游业这三年有多难熬?
- 注意!基金扩位简称规则全面落地 这些基金改名 影响有多大?