About Lind.DDD.Manager The training and learning of students
Explain ： Zhang Zhanling
flower ： Warehouse uncle
Main framework ：Lind.DDD,Lind.DDD.Manager
Because of the data model , Database initialization （Code.First Automatically upgrade the database or migrate the database version ） controller ,View View ,css,js And so on Standard back office management system frame , It can be directly applied to any system , Yes, it will be published to Nuget On , It's more convenient to install and update in the future .
How to install... For your project Lind.DDD.Manager
Lind stay nuget I already have my own version on the Internet , Users on their own projects directly from nuget Just install it online , It will put the corresponding view,content,script,dll Install it in your corresponding project , You don't have to worry about its upgrade , Because it's all about nuget To control ！
About the big filters , Instead of configuring cumbersome and outdated HttpModule
Lind.DDD.Authorization.Mvc.AuthorizationLoginFilter： Authorization for users after login
Lind.DDD.Filters.ActionAuthorityAttribute： Specify Action Add the identification of operation permission
Lind.DDD.Filters.ActionLoggerAttribute： Specify Action Record the operation log
Lind.DDD.Filters.ActionTrackAttribute: Yes action Tracking of execution time
Lind.DDD.Filters.ExceptionErrorLoggerAttribute: Yes action In the process of execution , Abnormal capture
Lind.DDD.Manager.Filters.ManagerUrlAttribute: Specify Url And system Url Contrast , Used to control menu permissions
Lind.DDD.Manager.Filters.ManagerActionLoggerAttribute: Background operation logging , It is inherited from ActionLoggerAttribute class , It mainly implements the background log persistence mechanism
About controllers and modules
Background module design , Each module is required to belong to a controller( controller ), It's a better way to control every action Right to act .
About characters － menu － Design of operation authority
About Action Add the permission attribute identifier in the
Enumeration of behavior types
For each Action Apply your own behavioral characteristics
About Action Add the operation log feature ID in
Due to the fact that there are many persistence ways for the business system to record logs , So we separate the logic of logging from the logic of persistence , Get put in Lind.DDD in , And the logic of persistence is in the specific project , Such as Lind.DDD.Manager project , It has its own operation log filter , It's in the project Action The way to apply it ManagerActionLoggerAttribute that will do , The code is as follows
stay Action The application code is as follows
About dataset permissions
Control some fields of the relevant data table of the business platform , According to different roles , Return different data sets for the business platform , And for business platforms , They will be a condition for filtering the table ！
The design of the model
First add the type of the dataset , It is used to select all the data to be filtered from the business platform
Then add the corresponding value , Select the corresponding type , Target data that can be filtered out
The business platform can use its own user number userid, Table name type And field names field To get the data , The framework provides /WebDataSetting/GetDataSet Method , Returns a string of target values , Each value is separated by a comma .
About the security design of menu authority
stay Lind.DDD.Manager in , Menu permissions are assigned to each role , And after the user logs in , It will display the corresponding menu list according to its role , This is usually shown in the navigation menu on the left , And if the user enters the menu directly in the address bar URL When doing an interview , We also have a corresponding ManagerUrlAttribute Control it , The main logic is to use the menu in the database to compare with the menu owned by the current role , If this permission exists , Only the page corresponding to the menu can be accessed .
Thank you for Lind.DDD The focus of the framework , Let's make the framework better together ！
Thank you ！
- Lind.DDD Agile domain driven framework ~ Introduce
Back to Zhanzhan recommendation blog index Recently, I feel that my framework is too complicated , In the implementation of the development and use of some uncomfortable , My friends often tell me , The frame is too cumbersome , Too many class libraries to reference : The reason why the architecture was designed like this before , Completely out of the separation of responsibilities and code reuse considerations , The main ...
- Lind.DDD.Domain Domain model introduction
Back to directory Lind.DDD.Domain be located Lind.DDD In the core project , It's designed primarily for domain entities , By a IEntity Identification interface of ,EntityBase Base classes and N individual Entity The entity class consists of , among IEntit ...
- Lind.DDD.API Core technology sharing
Back to directory About Lind.DDD In frame API Technical points of the framework Explain : Zhang Zhanling flower : Warehouse uncle Main framework :Lind.DDD Catalog About Lind.DDD.Authorization About the principle of Authorization About Api ...
- About Lind.DDD.Api The use of client and knowledge sharing
Back to directory About Lind.DDD.Api The use of and client calls author : Zhang Zhanling flower : Warehouse uncle frame :Lind.DDD,Lind.DDD.Api Catalog Api Register global check feature in 1 Api Set the global Cor ...
- Lind.DDD Agile domain driven framework ~Lind.DDD Introduction of each layer
Back to directory Lind.DDD The project is focused on agile , Rapid development of , Domain driven, etc , For its layering, it can also be merged , It's a bit rougher than uncle's framework , Or bolder , In the use of developers , It might feel more convenient , More use of , This is ...
- Lind.DDD.ConfigConstants Unified management system configuration
Back to directory Lind.DDD.ConfigConstants Belongs to a newly added component , Used to help us safely manage configuration messages , When we develop projects , There's a feeling , Yours config There will be more and more configuration items , It's getting harder to read , As you lead ...
- Lind.DDD.Repositories.EF Layer Introduction
Back to directory Lind.DDD.Repositories.EF hereinafter referred to as Repositories.EF, The reason why we take it from Lind.DDD Take out the , It's all about pluggability , So that everyone can recess to IoC The charm of , Which method to use ...
- Lind.DDD.Repositories.Mongo Layer Introduction
Back to directory It happened before Uncle said that it was stored before Mongodb, But in the uncle developed Lind.DDD after , Decided to move this thing to the storage layer of this framework , This is also the trend of the times , After all mongodb It's most like a relational database NoS ...
- Lind.DDD.Events Introduction to domain events
Back to directory Talk more I feel that domain events are the most difficult article to talk about , So it's a long time overdue , But in the end 2015 Before ( Lunar calendar ) Let's talk about this knowledge point , The event has been around for a long time C#1.0 Time has come , At that time, it was hard to learn , What is a delegate ...
- STL—Vector brief introduction
of C++ STL Medium vector The use of vectors ( Code example ) One . brief introduction Vector It's a sequential container called a vector ( I don't understand the relationship between sequential container and associated container Google). Two . characteristic 1. dynamic ( Equivalent to a dynamic array ...
- Android Some problems of modifying the application name after going online in development
One . stay Android Studio 1.3 Revision in China app The package name : Source of demand : Previously developed app It's already online in Tencent's app , At customer's request ,app Need to change the name , This is a bit of a problem . If you apply for a change of name , Requirements are as follows : Screenshot above ...
- The first 59 Chapter IdentityServer Interactive services - Identity Server 4 Chinese document (v1.0.0)
IIdentityServerInteractionService The interface is designed to provide a user interface for communicating with IdentityServer Communication services , It's mainly about user interaction . It can be obtained from the dependency injection system , It is usually used as a constructor parameter ...
- redis strengthening
One . Background description 1. Vulnerability description Redis Unauthorized access vulnerability due to improper configuration , Can be used maliciously by the attacker . Under certain conditions , If Redis With root Identity running , Hackers can give root Account write SSH A public key file , ...
- DOM How high is the operating cost ,HTML、CSS The build process , From what direction to avoid redrawing and rearrangement ）
Preface : 2019 year ! I'm ready Text : Since I've been in touch with the front end , I've heard a sentence all the time : operation DOM The cost is very high , Don't operate easily DOM. In especial React.vue etc. MV* The emergence of frames , The pattern of data-driven view is more and more popular ,jQ ...
- Fool to build a private network hard disk ——owncloud Installation guide
Baidu cloud this cheap guy every day to delete my resources , I can't stand it anymore , So I wanted to build a owncloud Come and put my Lipan . Use owncloud Not only is it safe , And it can be played online , Download offline , It's quite powerful . However ····· Check it on the Internet , There is no such thing ...
- .net like Fuzzy query parameterization
List<SqlParameter> paras = new List<SqlParameter>(); if (!string.IsNullOrEmpty(ciName)) ...
- [android] Mobile guard reads contacts
obtain ContentResolver Content parser objects , adopt getContentResolver() Method call ContentResolver Object's query() Method , obtain raw_contacts The data in the table ...
- Elasticsearch Docker Installation in environment
Elasticsearch Docker Installation in environment Daemon The image configuration is https://registry.docker-cn.com Linux:vi /etc/docker/daemon.jso ...
- Luogu 2577[ZJOI2005] lunch - Dynamic programming
Solution ah ... I'm too busy It's impossible not to look at the solution , Never in my life . First of all, the time in a queue for someone's turn is increasing , Plus dinner time , So it can only make the meal time decrease , To satisfy the optimal , So at dinner ...