zoukankan      html  css  js  c++  java
  • ASP.NET:Forms身份验证和基于Role的权限验证

    从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望。Membership的唯一作用就是你可以参考它的实现,它的数据库创建和扩展方面就真的让人实在无法使用了。

    当大家欢呼着让ASP.NET开发走上ASP MVC的正确道路时,身份验证组件却走的更远了:SimpleMembership除了第三方验证的参考价值,它的主键和对领域模型的入侵让它成了摆设,而ASP.NET Identity除了把第三方验证搞的更复杂化外依然没有改进。想起SimpleMembership在code first方面的支持上给我带来的各种麻烦让我现在依然碎碎念。

    ASP.NET Identity在Code First这方面虽有改进,但在依赖方面不只是个IdentityUser的继承,竟然还用IdentityDbContext试图搞我的DbContext,你知道我有没有DbContext啊?

    幸亏核心都还是基于Cookie的,Forms身份验证也一直可以使用,所以毫不犹豫拿出Forms+FormsAuthentication砍死了SimpleMembership和ASP.NET Identity。这俩货让我这两年赌了无数次,冒着被无数小白和伪实战专家真小白喷的危险我也必须抛弃。还要庆幸权限验证的核心页依然是IPrincipal,使用自定义的RoleProvider可以将权限验证从这俩鸡肋里拯救出来。

    1.配置好Web.config

    2.清爽的User和Role

    3.只需要将2个方法的RoleProvider

    4.IAccountService和IUserRepo

    只用于演示,依赖注入页简单使用Factory的静态方法。

    为了便于演示,使用admin登录的,我们返回admin权限。

    5.功能演示:

    一想到我没有任何依赖任意测试的Domain Model,只对外接口依赖的Controller,心里真舒坦。登录、退出、admin权限控制,太晚了,不截图了自己跑Demo吧。

    点击此处下载本文的示例代码

  • 相关阅读:
    封装异常处理之坑
    30multipart/form-data和application/x-www-form-urlencoded的区别(二)urlencoded之自动deocde
    使用MAT时的Shallow Size和 Retained Size的区别
    当动态代理遇到ioc
    线程池的原理
    synchroned原理与对象头(yet)
    mysql压力测试与qps监控
    一种mysql jvm死锁
    Android Jni变量对照表
    结构体中使用函数指针
  • 原文地址:https://www.cnblogs.com/easygame/p/4427395.html
Copyright © 2011-2022 走看看