`

shiro用法

阅读更多
在知道有shiro这个东西的时候是在用springside4中看到的,看到以后发现这个东西真的蛮好用的在权限这一块。现在就说说我在学习这个shiro中对他的了解,我查阅过很多资料,但是都不具体,有人写了demo也没有说明,不过最后还是让我弄懂了,现在我就说一下这个shiro的具体的工作 流程,她是怎么验证登陆和给权限的。(shiro 整合springmvc)
第一:下载相关的shiro的jar包。
第二:写一个自己的登陆验证和赋值权限的方法ShiroRealm(方法名随意写)但是这个方法要继承AuthorizingRealm
第三:重写doGetAuthenticationinfo和doGetAuthorizationInfo关于这两个方法我要着重说一下因为好多介绍都没有说这两个方法干嘛的;首先doGetAuthenticationinfo这个方法是查询数据库中是否有这个用户(后面会说到怎么查询)。doGetAuthorizationInfo这个方法是给用户添加权限
doGetAuthenticationinfo方法具体如下:
protected AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken authcToken) throws AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
// User user = userServiceImpl.findby(token.getUsername());
User user = new User();

user.setUserName("admin");
user.setPassword("123");
System.out.println("这个是en我不知道是不是先到这里。");
// if (user != null) {
return new SimpleAuthenticationInfo(user.getUserName(),
user.getPassword(), getName());


}

这我没有查询数据库,是直接给user对象赋值了,当然真正的项目中是要进行查询的也就是我注释掉的那句话User user = userServiceImpl.findby(token.getUsername());根据用户名来查询用户是否存在,如果存在那么user就不为空,反之则user为空。然后最后一句话return则是返回一个Authenticationinfo对象,这个对象就保存这查询出来的这个用户的信息。
doGetAuthorizationinfo方法具体如下:
protected AuthorizationInfo doGetAuthorizationInfo(
PrincipalCollection principals) {
/* 这里编写授权代码 */
Set<String> roleNames = new HashSet<String>();
    Set<String> permissions = new HashSet<String>();
    roleNames.add("admin");
    permissions.add("user.do?myjsp");
    permissions.add("login.do?main");
    permissions.add("login.do?logout");
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roleNames);
    info.setStringPermissions(permissions);
return info;

}
这里是参考了别人写的demo他这里没有用到数据库就是写了几个页面,然后这里给的是角色和资源(也就是这个角色能访问的页面或者controller)这里我还没有用数据库测试,所以先放着。但是我感觉springside4的那个角色弄的挺好,就是自己动手做的还没有成功,等成功了再放上来。
第四:就是要写一个登陆的controller具体内容如下:
@RequestMapping("/login")
public String login(@Valid User user,ModelMap model) {

System.out.println("username"+user.getUserName());
System.out.println("password"+user.getPassword());

Subject currentUser = SecurityUtils.getSubject();//获取用户信息

//搜集实体信息
UsernamePasswordToken token = new UsernamePasswordToken(
user.getUserName(), user.getPassword());
//token.setRememberMe(true);//记住我,的功能

try {
currentUser.login(token);//登陆认证
System.out.println("最后应该是这里了。login方法");
} catch (AuthenticationException e) {
return "error";
}
return "success";

}
这里首先获取登陆页面传来的信息,重要的看currentUser.login(token);这里currentUser的login方法就是认证了,这个login方法调用了上面的doGetAuthenticationInfo方法,然后两个对比看看是否是一样的,如果一样说明数据库中有这个用户那么就成功登陆,如果不一样则说明数据库中没有这个用户那么就会转到error.jsp这个页面。
好啦,弄了两天终于弄明白了,纠结死了。还有就是没有中文的shiro api文档真的就是摸着石头过河,努力ing`````,最后如果您有更要的学习文档,能不能分享一份,谢谢。邮箱jayyunfei@qq.com


备注:在shiro的配置文件中。配置访问路径权限的注释:anon:表示不登陆也能访问,authc:表示登陆后才能访问; perms[role:edit]这种的就是有role编辑权限的才能访问。


看了许多资料发现这个非常好然后记了下来:http://www.open-open.com/lib/view/open1334628062874.html
分享到:
评论

相关推荐

    shiro使用方法

    shiro使用方法shiro使用方法shiro使用方法shiro使用方法

    shiro使用方法.ppt

    SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务 Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说...

    shiro使用方法(上)

    shiro使用教程:核心组件、认证过程、授权、权限验证、过滤器

    shiro学习资料

    包含Apache_Shiro_reference(中文版).pdf,shiro 安全框架--最好的中文配置文档.pdf,shiro入门学习.ppt,shiro使用方法.ppt

    Shiro反序列化漏洞,Shiro版本升级资源

    shiro使用的版本是1.2.4,存在反序列化漏洞,我们采取的办法是手动升级到了1.2.6版本,但苦于无法验证是否解决了问题,后来发现了一款测试工具,ShiroExploit。 测试工具下载地址 ... 反序列化漏洞是如何产生的?...

    shiro_tool.zip

    一款好用的shiro检测利用工具,使用方式java -jar shiro_tool.jar https://xx.xx.xx.xx,Github有开源下载链接,在这里上传是为了赚积分下载别的工具,欢迎使用

    shiro-core-1.4.0-API文档-中文版.zip

    赠送jar包:shiro-core-1.4.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    springboot shiro pac4j cas jwt认证中心sso完整项目

    基于springboot框架,前后端分离模式下的shiro + pac4j +cas实现统一登录功能,子应用采用shiro鉴权,通过pac4j与cas交互,最终向前端返回jwt token

    SpringBoot整合Shiro后实现免密登录

    SpringBoot整合Shiro后实现免密登录 1,说明一下步骤,需要在原来基础新增三个文件 2,新增CustomToken,重写UsernamePasswordToken免密登录调用方法和密码登录调用方法都在里面。 3,新增...

    shiro-spring-1.4.0-API文档-中文版.zip

    赠送jar包:shiro-spring-1.4.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Shiro入门教程

    Shiro入门实例 Shiro入门教程 Shiro框架学习demo http://www.xttblog.com/?p=669 权限管理教程。Shiro是一个强大易用的...但是我们准备在快速指南中使用最最简单的main方法的方式,让你对Shiro的API有个感官的认识。

    shiro-event-1.4.0-API文档-中文版.zip

    赠送jar包:shiro-event-1.4.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    shiro反序列化漏洞暴力破解漏洞检测工具

    文件内包含内容如下: 1.shiro反序列化漏洞、暴力破解漏洞检测工具源码 2.shiro反序列化漏洞、暴力破解漏洞检测工具...4.shiro反序列化漏洞、暴力破解漏洞检测工具使用方法 5.shiro反序列化漏洞、暴力破解漏洞修改方法

    shiro-crypto-hash-1.4.0-API文档-中文版.zip

    赠送jar包:shiro-crypto-hash-1.4.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    shiro-core-1.3.2-API文档-中文版.zip

    赠送jar包:shiro-core-1.3.2.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    shiro-web-1.3.2-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    shiro-web-1.3.2-API文档-中文版.zip

    赠送jar包:shiro-web-1.3.2.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    shiro-hazelcast-1.4.0-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    shiro-event-1.4.0-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    shiro-guice-1.4.0-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

Global site tag (gtag.js) - Google Analytics