shiro——二

简单地说一下shiro四个基本核心功能:

Authentication(认证)

过程可以分为三步:

1、Collect the user’s identifying information, calledprincipals, and supporting proof of identity, calledcredentials.(收集用户的标识信息,被称为主体,并支持身份证明,称为凭证。)

2、Submit the principals and credentials to the system.(向系统提交主体和凭证。)

3、If the submitted credentials match what the system expects for that user identity (principal), the user is considered authenticated. If they don’t match, the user is not considered authenticated.(如果提交的凭证与系统期望的用户标识(主体)匹配,那么用户就被认为是经过身份验证的。如果它们不匹配,则用户不被认为是经过身份验证的。)

Subject subject = SecurityUtils.getSubject();

AuthenticationToken authenticationToken = new MyUsernamePasswordToken(userName, password, verifyCode, rememberMe);

public String login() {

try/catch

}

Authentication(认证)之后,用户可以进入系统,但是,能做哪些操作呢?具体的就需要进一步判断。

Authorization(授权):

可以分为role(角色)与permission(权限)验证:

role check:

if ( subject.hasRole(“administrator”) ) {

//show the ‘Create User’ button

} else {

//grey-out the button?

}

permission check:

if ( subject.isPermitted(“user:create”) ) {

//show the ‘Create User’ button

} else {

//grey-out the button?

}

role(角色)验证,在运行时不能添加或者删除。permission(权限)验证更加灵活,具有更细粒度,自己需要什么可以写什么。

Session Management(会话管理):

shiro 的session(会话)是独立于容器的,也就是说,不再需要专门的servlet与EJB容器了。对于企业缓存(enterprise caches)、关系数据库(relational databases)、NoSQL等可以一次性配置会话集群,不需要根据部署应用程序的方式重新配置应用程序。

Session session = subject.getSession();

Cryptography(加密):

简化利用JDK的密码支持使得数据混淆加密。使用的是hash(哈希)与ciphers(密码)。

之前使用MD5的加密方式如下:

try {

MessageDigest md = MessageDigest.getInstance("MD5");

md.digest(bytes);

byte[] hashed = md.digest();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

使用shiro之后:

String hex = new Md5Hash(myFile).toHex();

怎么样?简单了太多了吧,一句话就搞定了。简单粗暴,代码也更优雅。

使用256-bit AES加密,shiro下代码如下:

AesCipherService cipherService = new AesCipherService();

cipherService.setKeySize(256);


推荐微信公众号【排骨肉段】,记录日常的美好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容

  • 一、shiro的工作流程 项目每次启动时,根据shiroConfig的配置,将相应权限url加载到shiro框架中...
    夏日橘子冰阅读 1,897评论 4 2
  • 最终demo 开始之前,我们先造一些数据: 数据有了,下面开始Shrio的配置学习。开始之前先添加Shiro依赖 ...
    忧郁的小码仔阅读 8,669评论 11 21
  • Apache Shiro Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权...
    罗志贇阅读 3,224评论 1 49
  • 一、架构 要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shiro的应用...
    ITsupuerlady阅读 3,529评论 4 32
  • 在很多年前的夏天,我喜欢上了一个姑娘。她是海归,长得比汤唯还要好看。那时候,她是高大上设计师,我是矮穷矬程序员。 ...
    b77723ecf638阅读 227评论 0 0