【Shiro】--- 简介

         最近的权限框架,都是采用shiro来进行用户和角色的权限认证,听的多了,感觉自己不会有点说不过去,就在这里学习一下,作为简单了解,等到以后用到也不会抓瞎。

简单介绍:

       Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以为任何应用提供安全保障。

  • 认证---用户身份识别,常被称为用户“登录”
  • 授权---访问控制,可以对url授权,也可以对角色授权
  • 密码加密---保护或隐藏数据防止被偷窥----shiro自带许多加密的工具类,功能很强大
  • 会话管理---每用户相关的时间敏感的状态

 

 

网上有很多大神,对shiro的讲解很好,这里就引用一下,自己就不做再次介绍了:

http://jinnianshilongnian.iteye.com/blog/2018936/

 

咱们从一个Helloworld程序来简单了解一下shiro。

 

首先,咱们没有库,所以得设置一个realm,用来访问权限数据。

Realm的意思是域,shiro从realm中获取验证数据,它有很多种类,如jdbc.realm,jndi.realm,text.realm。

这里咱们采用的是text.realm。

 

先定义一个realm:

shiro.ini:

 

在maven中添加依赖:

               <dependency>

                  <groupId>org.apache.shiro</groupId>

                  <artifactId>shiro-core</artifactId>

                  <version>1.2.4</version>

          </dependency>

          

          <dependency>

                  <groupId>org.slf4j</groupId>

                  <artifactId>slf4j-log4j12</artifactId>

                  <version>1.7.12</version>

          </dependency>

 

 

然后建立一个HelloWorld类,写一个Main方法:

package com.java1234.shiro;

 

import org.apache.shiro.SecurityUtils;

import org.apache.shiro.authc.AuthenticationException;

import org.apache.shiro.authc.UsernamePasswordToken;

import org.apache.shiro.config.IniSecurityManagerFactory;

import org.apache.shiro.mgt.SecurityManager;

import org.apache.shiro.subject.Subject;

import org.apache.shiro.util.Factory;

 

public class HelloWorld {

public static void main(String[] args){

//读取配置文件初始化SecurityManager工厂

Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro.ini");

//获取securityManager实例

SecurityManager securityManager=factory.getInstance();

//securityManager实例绑定到SecurityUtils

SecurityUtils.setSecurityManager(securityManager);

//得到当前执行的用户

Subject currentUser=SecurityUtils.getSubject();

//创建token令牌,用户名/密码。相当于在页面输入用户名和密码

UsernamePasswordToken token=new UsernamePasswordToken("java1234", "123456");

try{

//身份认证

currentUser.login(token);

System.out.println("身份认证成功!");

}catch(AuthenticationException e){

e.printStackTrace();

System.out.println("身份认证失败!");

}

//退出

currentUser.logout();

}

 

}



猜你喜欢

转载自blog.csdn.net/u013045959/article/details/76855926