`

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

    在授权方面,Shiro 使用权限(Permission)、角色(Role)和用户(User)作为基础元素。权限表达式通常由冒号分隔,表示不同的操作范围。例如,`User:view` 表示用户查看权限,`User:view,edit` 表示用户有查看和...

    shiro使用方法(上)

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

    shiro学习资料

    "shiro使用方法.ppt"则是关于Shiro更具体的用法介绍,可能会涵盖更复杂的应用场景,比如会话管理、记住我功能、CSRF防护等。此外,它可能还会涉及Shiro与其他技术的集成,如Spring框架,以及如何解决常见问题和调试...

    shiro使用简单Demo

    总的来说,这个简单的Shiro Demo旨在帮助新手快速理解Shiro的用法,特别是如何通过URL和注解实现权限控制。通过学习这个例子,你可以了解Shiro的基本架构,包括配置SecurityManager、创建自定义Realm、处理Session...

    shiro_tool.zip

    在"shiro_tool.zip"这个压缩包中,我们可以推测可能包含了一些关于Shiro使用的工具类、配置示例或者是一些简化Shiro操作的实用代码。 Shiro的主要组件包括: 1. **认证**:验证用户身份的过程,即用户提交凭证(如...

    shiro教程 跟我学Shiro教程

    这本书籍详细介绍了Shiro框架的各个组件和使用方法。通过阅读,你可以了解到Shiro的基本架构,包括Subject、Realms、Caches等核心概念。Subject是Shiro中的核心接口,代表当前用户的安全上下文;Realms是数据源,...

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

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

    shiro和spring整合,使用权限注解

    3. `Controller.java`: 包含了使用Shiro注解的控制器方法示例。 通过阅读和理解这些配置文件和代码,我们可以了解到如何在实际项目中实现Shiro与Spring的整合,以及如何利用权限注解进行权限控制。 总之,Shiro与...

    shiro的基本使用

    在这个“shiro的基本使用”教程中,我们将深入理解 Shiro 的核心概念,并通过一个名为 "shirodemo" 的示例项目来实践这些概念。 **一、Shiro 的核心组件** 1. **认证**:Shiro 提供了身份验证(Authentication)...

    shiro.freemarker.ShiroTags已打包

    2. `ShiroUtils.java`: 可能包含了一些辅助工具方法,用于与 Shiro 框架的交互。 3. `FreemarkerConfiguration.java`: 可能是配置 Freemarker 引擎如何使用 ShiroTags 的类。 4. `pom.xml`: Maven 项目配置文件,...

    shiro例子,及书籍shiro.rar

    然后是"shiro-example-master.zip"源码项目,这通常是一系列示例代码,展示了Shiro在实际应用中的用法。你可能会找到以下示例: 1. **简单认证**:演示如何创建一个简单的登录页面,实现用户输入凭据的验证。 2. **...

    shiro权限案例demo

    总结起来,这个"shiro权限案例demo"是一个全面展示如何使用Apache Shiro实现在Java应用程序中进行用户权限管理的实例。它涵盖了认证、授权、会话管理和过滤器的使用,对于理解和应用Shiro的安全机制非常有帮助。通过...

    中文版参考手册Shiro_API.rar

    通过阅读这个中文版的Shiro参考手册,你将能够掌握Shiro的基本用法,理解其核心概念,并能有效地应用于你的Java项目中,为你的系统提供全面的安全保障。无论是初学者还是有经验的开发者,这都是一份不可或缺的学习...

    Shiro_Demo 一个简单的Shiro验证框架实例

    在Shiro_Demo中,我们可以配置Shiro如何存储和管理会话,例如使用内存、数据库或分布式存储。同时,Shiro还提供了会话监听器和超时控制等功能。 **7. 配置与启动** 在Shiro_Demo项目中,我们需要在`web.xml`中配置...

    shiro最简单整合版本

    5. 使用 Shiro API:在 Controller 或 Service 层,可以通过 Subject 进行认证和授权操作,如登录、检查权限等。 ```java Subject subject = SecurityUtils.getSubject(); // 登录 subject.login(token); // 检查...

    shiro使用源码和资料

    **shiro笔记.xlsx**:这份文档可能是用户或教程作者整理的Shiro学习笔记,涵盖了Shiro的使用方法、实例和常见问题。通过阅读这份笔记,你可以快速了解Shiro的实际应用和解决常见问题的策略。 **shiro.xmind**:这是...

    Apache Shiro教程

    - **官方文档**:Apache Shiro的官方文档详尽介绍了各个组件和使用方法。 - **示例代码**:提供的PDF教程可能包含示例代码,用于加深理解。 - **社区支持**:Apache Shiro有活跃的社区和邮件列表,遇到问题可以...

    shiro-all jar

    12. **org.apache.shiro.util**: 工具类和辅助类,提供通用的实用方法和辅助功能。 Shiro与Java的结合使得它成为了一个轻量级且易于使用的安全框架,适用于各种Java应用,从简单的命令行程序到复杂的Web应用,甚至...

Global site tag (gtag.js) - Google Analytics